【问题标题】:Performing arithmetic operation on string list对字符串列表执行算术运算
【发布时间】:2013-09-06 12:18:50
【问题描述】:

我已使用 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)'`

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

【问题讨论】:

    标签: python string arithmetic-expressions


    【解决方案1】:

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

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

    你可以检查输出:

    >>> a
    1205548180
    

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

    【讨论】:

      【解决方案2】:
      >>> s = 'a=(10100*10)+(-1289201*20)+(12312312*100)'
      >>> index = s.find('=') + 1
      >>> eval(s[index:])
      

      【讨论】:

      • 我收到错误:list 对象不可调用。 eval 是列表吗?
      猜你喜欢
      • 2017-01-10
      • 2013-02-19
      • 1970-01-01
      • 2014-02-17
      • 1970-01-01
      • 2012-09-12
      • 1970-01-01
      • 2017-04-06
      • 2020-04-17
      相关资源
      最近更新 更多