将逗号分隔的字符串数字转换为python中的整数或浮点数

时间:2015-01-30 17:25:13

标签: python

我在Python上非常擅长,而且我遇到了一个问题。我试图将一串数字转换为int或float,以便我可以将它们添加起来。这是我的第一个问题/帖子。非常感谢任何建议!

total = 0
s = '2, 3.4, 5, 3, 6.2, 4, 7'

for i in s:
    total += int(i)
print total

我收到了错误:

      *3 
      4 for i in s:
----> 5     total += int(i)
      6 print total

ValueError: invalid literal for int() with base 10: ','* 

5 个答案:

答案 0 :(得分:5)

您希望使用str.split将字符串拆分为逗号。然后,将它们转换为浮点数(当你说要将它们转换为&#34; int或float&#34;)时,我不知道你为什么要使用int。< / p>

total = 0
s = '2, 3.4, 5, 3, 6.2, 4, 7'
for i in s.split(','):
    total += float(i)
print total

就个人而言,我更愿意使用生成器表达式来执行此操作:

s = '2, 3.4, 5, 3, 6.2, 4, 7'
total = sum(float(i) for i in s.split(','))
print total

您正在做的事情不起作用的原因是for i in s遍历s的每个字符。首先它是total += int('2'),它起作用。但是它会尝试total += int(','),这显然不起作用。

答案 1 :(得分:3)

您有一串逗号分隔的 float 值,而不是 int 。您需要首先split然后添加它们。您需要将其投放到float而不是int

total = 0
s = '2, 3.4, 5, 3, 6.2, 4, 7'

for i in s.split(','):
    total += float(i)
print total

输出为30.6

答案 2 :(得分:1)

这个怎么样? (^ _ ^)

In[3]: s = '2, 3.4, 5, 3, 6.2, 4, 7'
In[4]: s = s.replace(",","+") # s = '2+ 3.4+ 5+ 3+ 6.2+ 4+ 7'
In[5]: total = eval(s)
In[6]: print(total)
30.6

答案 3 :(得分:0)

这是我的方法。

total = 0
s = '2, 3.4, 5, 3, 6.2, 4, 7'
lst = s.split(',');
for i in lst:
    i = float(i)
    total += i
print total

答案 4 :(得分:0)

您想要拆分字符串

total = 0
for i in s.split(','):
    i = float(i) #using float because you don't only have integers
    total += i