我真的不明白为什么它不起作用。有人能帮助我吗?
我有一个文本文件,其中的数据列表如下。
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])
为什么它不能通过替换而是打印值?
答案 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
中的。