我可以在python中格式化诸如字符串之类的变量吗?

发布时间:2020-07-06 15:18

我想在脚本的很多地方使用打印命令。但是我需要继续用其他字符串替换“ Survived”。

print(df.Survived.value_counts())

我可以通过与字符串相同的方式格式化变量来自动执行该过程吗?因此,如果我想将“生存”替换为“不同”,可以使用类似的内容:

var = 'different'
text = 'df.{}.value_counts()'.format(var)
print(text)

不幸的是,这会以字符串形式输出“ df.different.value_counts()”,而我需要打印df.different.value_counts()

回答1

我非常确定很多IDE,具有称为重构的选项,它允许您将每一行代码中的相似代码行/字符串更改为所需的内容。

我知道VSCode的重构方式,方法是选择一部分代码,然后右键单击以选择称为“更改所有事件”的选项。如果存在,它将替换每行上的确切代码。

但是,如果您想执行建议的操作,则可以选择eval('df.{}.value_counts()'.format(var)),但这是非常不安全且危险的,因此,更安全的方法是导入ast模块并使用更安全的literal_eval函数。 ast.literal_eval('df.{}.value_counts()'.format(var))

如果ast.literal_eval()不起作用,请尝试这种可行的最终解决方案。

def cat():
    return 1

text = locals()['df.{}.value_counts'.format(var)]()

回答2

找到了方法:print(df [var] .value_counts())