考慮稱爲文本文件 「new.txt」 含有以下元素:雷丁的unicode元素注入numpy的陣列
μm
∂r
∆λ
在Python 2.7,我可以通過鍵入讀取文件:
>>> import codecs
>>> f = codecs.open('new.txt', encoding='utf-8')
>>> lines = [line.strip() for line in f2.readlines()]
>>> lines
[u'\u03bcm', u'\u2202r', u'\u2206\u03bb']
>>> print lines[0]
μm
到現在爲止還挺好。我可以很容易地通過這個列表轉換爲numpy的數組:
>>> import numpy as np
>>> arr = np.array(lines)
>>> arr
array([u'\u03bcm', u'\u2202r', u'\u2206\u03bb'],
dtype='<U2')
的問題是,我無法通過numpy的的loadtxt功能直接讀取這個文件:
>>> np.loadtxt('new.txt', dtype=np.unicode_)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib64/python2.7/site-packages/numpy/lib/npyio.py", line 805, in loadtxt
X = np.array(X, dtype)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xce in position 0: ordinal not in range(128)
什麼是閱讀的正確方法這個文件直接進入numpy?
謝謝。
+1 - 但是一個提示:你可以將一個打開的文件直接傳遞給'loadtxt',對於我來說,用'codecs.open'打開文件並傳遞給'loadtxt'解決了這個問題。或者相當類似的問題,因爲我的'loadtxt'對utf-8文件沒有問題! – senderle 2011-06-16 16:58:59
@senderle:奇怪 - 不適合我。我在這裏使用NumPy 1.5.1 - 也許這很重要。 – 2011-06-16 17:23:28
這與使用numpy Python 3端口有什麼關係?我仍然在我的numpy中使用Python 2.7下的UnicodeEncodeError。 – 2011-06-16 17:28:53