将字符串转换为循环浮点数

时间:2015-05-11 15:11:10

标签: python parsing

我真的不明白为什么它不起作用。有人能帮助我吗?

我有一个文本文件,其中的数据列表如下。

04/05/2015 15:30 58.6

04/05/2015 16:00 56.3

...

每行有3个空格分隔的数据。

我用

阅读
with open('./data') as fi:

    data = [[t for t in line.split() ]for line in fi]

然后变量有数据

[['04/05/2015', '15:30', '58.6'],
 ['04/05/2015', '16:00', '56.3'],
...
]

我只想取出第3栏中的数据,然后我做了一个循环。

for t in data:
    a=float(t[2])

但我收到了错误

ValueError                                Traceback (most recent call      last)
<ipython-input-76-83c96b309de0> in <module>()
      2 i=0
      3 for t in data:
----> 4     a=float(t[2])
      5 

ValueError: could not convert string to float:  

我不明白的是,如果我用'print'替换'a =',它会打印出值。

for t in data:
    print float(t[2])

为什么它不能通过替换而是打印值?

1 个答案:

答案 0 :(得分:1)

您的输入文件中似乎有unicode字符。您可以使用codecs.open指定用于打开文件的编码:

import codecs
with codecs.open("input.txt", encoding="utf-8") as f:
  data = [line.split() for line in f]
a = []
for row in data:
  print [col for col in row]
for t in data:
  try:
    a.append(float(t[2]))
  except ValueError:
    break
print(a)

上面用

打印[58.6, 56.3]
04/05/2015 15:30 58.6
04/05/2015 16:00 56.3
04/05/2015 16:00 \xc2\xa0
input.txt中的