में पढ़ना यूनिकोड तत्वों नामक एक पाठ फ़ाइल पर विचार करें "new.txt" निम्नलिखित तत्वों से युक्त:numpy सरणी
μm
∂r
∆λ
अजगर 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
@sendle: अजीब - मेरे लिए काम नहीं करता है। मैं यहाँ NumPy 1.5.1 का उपयोग कर रहा हूँ - शायद यह मायने रखता है। –
क्या इसमें numpy पायथन 3 पोर्ट का उपयोग करने के साथ कुछ भी करना है? मुझे अभी भी मेरी numpy में यूनिकोड एन्कोडर त्रुटि मिलती है जो पायथन 2.7 के तहत काम कर रही है। –