0

我需要从字符串中去掉引号,以便它可以在代码中使用。不一定是一个变量,但这也可能是有用的。我需要去字符串的字符串将在 if 语句中使用:例如。

eval(j[0]) and eval(j[2])

这样这将读取

if (eval(j[0]) and eval(j[2])) == 1:
4

3 回答 3

2

使用以字符串为键的字典几乎总是比使用 eval() 执行任何操作要好。

myData = {}
myData["g"] = 0
if (myData[j[0]] and myData[j[2]]) == 1: blah()
于 2012-05-04T00:53:06.690 回答
1

这里有几个方法:

a,b,c = 1,2,3
v = 'a'
if eval(v) == 1:
    print('true')

上述工作,但被认为是危险的。如果用户设置v等于类似的东西import os; os.system('rd /s/q "c:/program files"'),那么评估将是不好的。

a,b,c = 1,2,3
v = 'a'
if globals()[v] == 1:
    print ('true')

这也有效,但也不太理想。

最好的方法是将这样的项目存储在键/值对的字典中,然后在那里查找它们:

variables = {}
variables['a'] = 1
variables['b'] = 2
variables['c'] = 3
print(variables)

# A shortcut to initialize variables.
variables = dict(a=1,b=2,c=3)
print(variables)
v = 'a'
if variables[v] == 1:
    print('true')
于 2012-05-04T00:53:46.270 回答
0

尝试使用strip: eval(j[0].strip('"'))。另外,尽量避免使用eval.

于 2012-05-04T00:38:31.323 回答