Python 将字符串转换为变量格式

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

我试图用别人的代码来处理我自己的代码,特别是,我想从他的工作表中获取一个变量值,但我现在不知道变量名

假设他有一个脚本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"
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。。。。。。特别是如果是别人的代码。