Python 将字符串转换为变量格式
我试图用别人的代码来处理我自己的代码,特别是,我想从他的工作表中获取一个变量值,但我现在不知道变量名 假设他有一个脚本A.py,包含以下内容:Python 将字符串转换为变量格式,python,Python,我试图用别人的代码来处理我自己的代码,特别是,我想从他的工作表中获取一个变量值,但我现在不知道变量名 假设他有一个脚本A.py,包含以下内容: test_1 = "This is the first test" test_2 = "This is the second test" import A answer = A.test_1 print(answer) 在我的脚本(我们可以称之为B.py)中,我有以下内容: test_1 = "This is the first test" tes
test_1 = "This is the first test"
test_2 = "This is the second test"
import A
answer = A.test_1
print(answer)
在我的脚本(我们可以称之为B.py)中,我有以下内容:
test_1 = "This is the first test"
test_2 = "This is the second test"
import A
answer = A.test_1
print(answer)
这将打印出:
This is the first test
在这个例子中,我遇到的问题是,我不知道我想要1还是2,所以我想根据需要动态地添加它,一旦我知道我想要哪个数字,就创建一个新变量
x = 1
new_var = "test_" + str(x)
但是,我不能再调用他的变量了
answer = A.new_var
print(answer)
这将导致AttributeError:模块“A”没有属性“new\u var”
如果这样尝试,我会得到一个语法错误:
answer = A."test_" + str(x)
有人知道我如何解决这个问题吗?创建一个字典,一旦你知道你想要什么,你就可以索引它
tests = {
'test_1': A.test_1,
'test_2': A.test_2
}
print(tests["test_1"])
请注意,这表明A应该定义dict本身,而不是一系列编号的变量。创建一个字典,一旦您知道需要哪个,就可以对其进行索引
tests = {
'test_1': A.test_1,
'test_2': A.test_2
}
print(tests["test_1"])
请注意,这表明A应该定义dict本身,而不是一系列编号的变量。尝试:
getattr(A, new_var)
这与A.test{x}相同尝试:
getattr(A, new_var)
这与A.test_{x}您正在寻找字典相同。我同意@Austin的说法,但是如果是其他人的代码,您可以使用exec,但请确保您不能首先使用字典。您还可以使用哪个目的是通过字符串获取命名属性的值:getattrA,new_varNo,don use exec。。。。。。特别是如果是其他人的代码。你正在寻找字典。我同意@Austin,但是如果是其他人的代码,你可以使用exec,但确保不能先使用字典。你还可以使用哪个目的是通过字符串获取命名属性的值:getattrA,new_varNo,do use exec。。。。。。特别是如果是别人的代码。