【发布时间】:2014-05-21 03:13:57
【问题描述】:
我有一个(windows)文本文件被 linux 报告为:
ISO-8859 text, with very long lines, with CRLF line terminators
我想将它读入 numpy,除了包含标签的第一行(带有特殊字符,通常只有希腊语 mu)。
Python 2.7.6,Numpy 1.8.0,完美运行:
data = np.loadtxt('input_file.txt', skiprows=1)
Python 3.4.0,Numpy 1.8.0,报错:
>>> np.loadtxt('input_file.txt', skiprows=1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.4/site-packages/numpy/lib/npyio.py", line 796, in loadtxt
next(fh)
File "/usr/lib/python3.4/codecs.py", line 313, in decode
(result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb5 in position 4158: invalid start byte
对我来说,这是“错误”的行为,原因如下:
- 我想跳过第一行,因此无论其编码如何,都应该忽略它
- 如果我从文件中删除第一行,loadtxt 在两个版本的 python 中都可以正常工作
- numpy.loadtxt 在 python2 和 python3 中的行为不应该相同吗?
问题:
- 如何解决这个问题(当然是使用 python3)?
- 我应该提交错误报告还是这是预期的行为?
【问题讨论】:
-
你用
genfromtxt()得到同样的结果吗? -
不! genfromtxt() 有效。谢谢!
-
我在 NumPy 的 GitHub 中创建了this issue
标签: python python-3.x numpy unicode