1

我已经csv使用 python 从文件中提取数据。文件中的数据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)'`

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

4

2 回答 2

4
>>> s = 'a=(10100*10)+(-1289201*20)+(12312312*100)'
>>> index = s.find('=') + 1
>>> eval(s[index:])
于 2013-09-03T10:07:02.197 回答
0

上面的答案很好。这是另一种少一行的方法:

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

你可以检查输出:

>>> a
1205548180

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

于 2013-09-03T10:54:07.680 回答