【问题标题】:python3: How can I add decimals that are inside a stringpython3:如何添加字符串内的小数
【发布时间】:2017-10-26 16:17:07
【问题描述】:

我是初学者,我想在字符串s中添加小数

 totalsum=0
 s='1.23 2.4 3.123'
 for a in s:
    totalsum=totalsum+float(a)
 print (totalsum)

但是当我尝试时它说

ValueError: could not convert string to float: '.'

如何添加这三个小数?

【问题讨论】:

  • sum(map(float, s.split())) 似乎应该这样做。

标签: python string python-3.x decimal


【解决方案1】:

您正在迭代字符串的每个字符。一开始它可以工作(嗯,对于1...),但是当你到达. 时,你会得到一个解析错误。

现在,您需要拆分字符串。并且是pythonic,在一行中做到这一点:

totalsum = sum(map(float,s.split()))

【讨论】:

    【解决方案2】:

    你可以使用正则表达式:

    import re
    s='1.23 2.4 -4.3 3.123 56'
    data = sum(map(float, re.findall('(-*\d+\.*\d+)|\b-*\d+\b', s)))
    

    输出:

    58.453
    

    【讨论】:

    • 这不适用于像1 这样的数字。如果没有点,你就干杯。
    • @Jean-FrançoisFabre 感谢您指出这一点。请查看我最近的编辑。
    • 负数呢?指数(注意:您试图从字符串中仅提取有效的浮点数,从而过度回答了这个问题:这场战斗失败了:))
    【解决方案3】:

    你必须这样做,你试图将整个字符串添加到浮动。相反,您必须拆分并添加它们

       totalsum=0
        s='1.23 2.4 3.123'
        for a in s.split():
            totalsum=totalsum+float(a)
        print (totalsum)
    

    【讨论】:

    • 它不是将整个字符串添加到浮动中,而是添加字符串的所有字符。
    【解决方案4】:

    你需要拆分你的字符串。

    totalsum=0
    s='1.23 2.4 3.123'.split()
    for a in s:
        totalsum =totalsum + float(a)
    print (totalsum)
    

    输出:

    6.753
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-31
      • 1970-01-01
      • 1970-01-01
      • 2015-03-09
      相关资源
      最近更新 更多