builtins.ValueError:无法将字符串转换为float

时间:2017-10-28 00:26:07

标签: python

我一直在尝试将列表的索引转换为float,以便我可以将它附加到循环的每次迭代的新列表中,这样我最终可以获取该最终附加列表的最小值。当我做

之类的事情
a = '4.34324'
f = float(a) 
在python shell中,它似乎工作正常,但我无法弄清楚为什么这不起作用。作为参考,tdlist是一个列表列表,当我这样做时

print(TMINlist[tdlist.index(x)])

输出是字符串

'60.6'

所以我无法弄清楚为什么它不会将它转换为浮点数。我的代码如下,问题出在第8行。

TMINlist = []
for pos in range(len(tdlist)):
    TMINlist.append(tdlist[pos][10])
TMINlist2 = []
for x in tdlist:
    if int(x[1][1]) == month:
        if x != '':
            a = (TMINlist[tdlist.index(x)])
            value = float(a)
            TMINlist2.append(value)
        else:
            continue

添加了print(repr())语句后,返回此错误:

'60.6'
''
Traceback (most recent call last):
  File "C:/Users/liamm/Dropbox/Hw/Homework 5/hw5Part2.py", line 57, in 
  <module>
    value = float(a)
builtins.ValueError: could not convert string to float:

列表的示例片段是:

[['TROY LOCK AND DAM NY', ['2014', '01'], '18', '0', '-9', '6.8', '58', '2.16', '12.7', '19.8', '29.2', '10.4\n'], ['TROY LOCK AND DAM NY', ['2014', '02'], '20', '0', '-7', '12', '53', '4.08', '24.6', '22.2', '31.2', '13.4\n']]

1 个答案:

答案 0 :(得分:0)

你的错误在这里:

x[1][1]

当你这样做时,第一个x[1]返回一个字符串,第二个x [1] [1]重新调整字符串中的第二个字符,所以你必须将它改为:

TMINlist = []
for pos in range(len(tdlist)):
    TMINlist.append(tdlist[pos][10])
TMINlist2 = []
for x in tdlist:
    if int(x[1]) == month: # here, you have to take the x[1], not x[1][1]
        if x != '':
            value = float(TMINlist[tdlist.index(x)])
            TMINlist2.append(value)
        else:
            continue

示例:

考虑这个清单:

TMINlist = [] tdlist = [[&#34; 0.4&#34;,&#34; 0.4&#34;,&#34; 0.4&#34;,&#34; 0.4&#34;],[&#34; 0.4&#34;,&#34; 0.4&#34;,&#34; 0.4&#34;,&#34; 0.4&#34;]] TMINlist2 = []

运行上面的代码后,他们将返回:

   TMINlist2
=> [0.4, 0.4]
   TMINlist
=> ['0.4', '0.4']
   tdlist
=> [['0.4', '0.4', '0.4', '0.4'], ['0.4', '0.4', '0.4', '0.4']]