对字符串列表执行算术运算

时间:2013-09-03 09:57:55

标签: python string arithmetic-expressions

我使用python从csv文件中提取数据。 csv文件中的数据采用以下格式:

a=(10100*b)+(-1289201*c)+(12312312*d)

我编写了代码以从csv文件中提取它。

ar=[]
ins = open(log,"r")
for line in ins:
        ar.append(line)
ins.close()

所以,ar[0]='a=(10100*b)+(-1289201*c)+(12312312*d)'

现在,我需要用特定的浮点变量替换b,c和d的值。

所以,我做了以下事情:

map = [ ('b','10'), ('c', '20'), ('d','100') ]
for k, v in map: 
 ar[0] = ar[0].replace(k,v)

现在的问题是我无法对最终结果进行任何算术运算,也就是说,输出采用以下格式。

`ar[0]='a=(10100*10)+(-1289201*20)+(12312312*100)'`

有没有办法可以对以下列表格式执行某些算术运算。 我试图删除列表,但这没有帮助。

2 个答案:

答案 0 :(得分:4)

>>> s = 'a=(10100*10)+(-1289201*20)+(12312312*100)'
>>> index = s.find('=') + 1
>>> eval(s[index:])

答案 1 :(得分:0)

上面的答案非常好。这是另一种减少1行的方法:

>>> s = 'a=(10100*10)+(-1289201*20)+(12312312*100)'
>>> exec s

你可以查看输出:

>>> a
1205548180

exec语句用于执行表达式,而不仅仅是求值。