导入文本文件出错
Importing a text file gives error
我有一个包含以下数据的文本文件:
5298 10036 4 360 8
6128 11947 2 385 7
9472 18930 0 233 4
5056 9790 1 293 6
我使用以下代码读取此文件:
file1 = open("test.txt","r")
lines = file1.readlines()
BF=[map(float, line.split()) for line in lines]
这给了我以下错误:
could not convert string to float: ÿþ5
为什么我会看到这个错误?
更新:
print lines
显示:
['\xff\xfe5\x002\x009\x008\x00\t\x001\x000\x000\x003\x006\x00\t\x004\x00\t\x003\x006\x000\x00\t\x008\x00\r\x00\n', '\x006\x001\x002\x008\x00\t\x001\x001\x009\x004\x007\x00\t\x002\x00\t\x003\x008\x005\x00\t\x007\x00\r\x00\n', '\x009\x004\x007\x002\x00\t\x001\x008\x009\x003\x000\x00\t\x000\x00\t\x002\x003\x003\x00\t\x004\x00\r\x00\n', '\x005\x000\x005\x006\x00\t\x009\x007\x009\x000\x00\t\x001\x00\t\x002\x009\x003\x00\t\x006\x00\r\x00\n', '\x001\x005\x000\x006\x004\x00\t\x003\x000\x001\x006\x000\x00\t\x001\x00\t\x003\x001\x002\x00\t\x008\x00']
你有一个utf-16 BOM,这个是0xFE
0xFF
解释为ÿþ
,你需要打开文件并传递编码。
file1 = open("test.txt","r", encoding = "utf-16")
当您使用 python 2 时,您可以试试这个:
import io
file1 = io.open("test.txt","r", encoding = "utf-16")
import io
file1 = io.open("test.txt","r",encoding='utf-16')
lines = file1.readlines()
BF=[map(float, line.split()) for line in lines]
print BF
结果:
[[5298.0, 10036.0, 4.0, 360.0, 8.0], [6128.0, 11947.0, 2.0, 385.0, 7.0], [9472.0, 18930.0, 0.0, 233.0, 4.0], [5056.0, 9790.0, 1.0, 293.0, 6.0]]
如果每行末尾可能有一个换行符,为什么不在行中为每一行打印 line.split() ;只是为了确认数字是否正确分割....
我有一个包含以下数据的文本文件:
5298 10036 4 360 8
6128 11947 2 385 7
9472 18930 0 233 4
5056 9790 1 293 6
我使用以下代码读取此文件:
file1 = open("test.txt","r")
lines = file1.readlines()
BF=[map(float, line.split()) for line in lines]
这给了我以下错误:
could not convert string to float: ÿþ5
为什么我会看到这个错误?
更新:
print lines
显示:
['\xff\xfe5\x002\x009\x008\x00\t\x001\x000\x000\x003\x006\x00\t\x004\x00\t\x003\x006\x000\x00\t\x008\x00\r\x00\n', '\x006\x001\x002\x008\x00\t\x001\x001\x009\x004\x007\x00\t\x002\x00\t\x003\x008\x005\x00\t\x007\x00\r\x00\n', '\x009\x004\x007\x002\x00\t\x001\x008\x009\x003\x000\x00\t\x000\x00\t\x002\x003\x003\x00\t\x004\x00\r\x00\n', '\x005\x000\x005\x006\x00\t\x009\x007\x009\x000\x00\t\x001\x00\t\x002\x009\x003\x00\t\x006\x00\r\x00\n', '\x001\x005\x000\x006\x004\x00\t\x003\x000\x001\x006\x000\x00\t\x001\x00\t\x003\x001\x002\x00\t\x008\x00']
你有一个utf-16 BOM,这个是0xFE
0xFF
解释为ÿþ
,你需要打开文件并传递编码。
file1 = open("test.txt","r", encoding = "utf-16")
当您使用 python 2 时,您可以试试这个:
import io
file1 = io.open("test.txt","r", encoding = "utf-16")
import io
file1 = io.open("test.txt","r",encoding='utf-16')
lines = file1.readlines()
BF=[map(float, line.split()) for line in lines]
print BF
结果:
[[5298.0, 10036.0, 4.0, 360.0, 8.0], [6128.0, 11947.0, 2.0, 385.0, 7.0], [9472.0, 18930.0, 0.0, 233.0, 4.0], [5056.0, 9790.0, 1.0, 293.0, 6.0]]
如果每行末尾可能有一个换行符,为什么不在行中为每一行打印 line.split() ;只是为了确认数字是否正确分割....