我使用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)'`
有没有办法可以对以下列表格式执行某些算术运算。 我试图删除列表,但这没有帮助。
答案 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
语句用于执行表达式,而不仅仅是求值。