Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 我可以在python中格式化字符串之类的变量吗?_Python 3.x_String_Function_Global Variables - Fatal编程技术网

Python 3.x 我可以在python中格式化字符串之类的变量吗?

Python 3.x 我可以在python中格式化字符串之类的变量吗?,python-3.x,string,function,global-variables,Python 3.x,String,Function,Global Variables,我想在脚本的许多地方使用下面的打印命令。但我需要继续用其他字符串替换“幸存” print(df.Survived.value_counts()) 我可以用和字符串相同的方式格式化变量来自动化这个过程吗?因此,如果我想用“不同”来替换“幸存”的话,我可以使用类似于: var = 'different' text = 'df.{}.value_counts()'.format(var) print(text) 不幸的是,这将“df.different.value_counts()”打印为字符串,

我想在脚本的许多地方使用下面的打印命令。但我需要继续用其他字符串替换“幸存”

print(df.Survived.value_counts())
我可以用和字符串相同的方式格式化变量来自动化这个过程吗?因此,如果我想用“不同”来替换“幸存”的话,我可以使用类似于:

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

不幸的是,这将“df.different.value_counts()”打印为字符串,而我需要打印df.different.value_counts()的值。我非常确定许多IDE都有这个称为重构的选项,它允许您将每行代码上的类似代码行/字符串更改为您需要的代码行

我知道VSCode的重构方法是选择代码的一部分,然后右键单击选择名为ChangeAll occurances的选项。这将替换每行上的确切代码(如果存在)

但是如果你想按照你的建议去做,那么
eval('df.{}.value_counts()'.format(var))
是一个选项,但是这是非常不安全和危险的,所以更安全的方法是导入ast模块并使用它的literal_eval函数,这样更安全
ast.literal_eval('df.{}.value_counts()')。format(var))

如果
ast.literal\u eval()
不起作用,请尝试此最终有效的解决方案

def cat():
    return 1

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


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

eval
是邪恶的:)它是邪恶的,但这也是他问题的唯一可能的直接答案。不,你仍然可以使用
ast.literal_eval
。是的,我会编辑我的答案来更新。这个代码:ast.literal_eval('df.{}.value_counts()'。格式(var))给我一条错误消息:节点或字符串格式错误:并且我已成功导入ast