मेरे पास एक एक्सेल स्प्रेडशीट है जिसमें मैं पढ़ रहा हूं जिसमें कुछ £ संकेत हैं।यूनिकोड एन्कोडर त्रुटि: 'ascii' कोडेक चरित्र को एन्कोड नहीं कर सकता है xa3 '
जब मैं xlrd मॉड्यूल का उपयोग करने में इसे पढ़ने के लिए कोशिश मैं निम्नलिखित त्रुटि मिलती है:
x = table.cell_value(row, col)
x = x.decode("ISO-8859-1")
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa3' in position 0: ordinal not in range(128)
अगर मैं x.encode को यह पुनर्लेखन ('utf-8') यह एक त्रुटि फेंक बंद हो जाता है लेकिन दुर्भाग्य से जब मैं कहीं और डेटा (लैटिन -1 के रूप में) लिखता हूं, तो £ संकेत सभी गड़बड़ हो जाते हैं।
मैं इसे कैसे ठीक कर सकता हूं, और सही ढंग से £ संकेतों को पढ़ सकता हूं?
--- अद्यतन ---
कुछ प्रकार पाठकों सुझाव दिया है कि मैं बिल्कुल भी यह डिकोड करने की जरूरत नहीं है, या मैं बस जब मैं करने की जरूरत है लैटिन -1 करने के लिए इसे सांकेतिक शब्दों में बदलना कर सकते हैं। इसके साथ समस्या यह है कि मुझे डेटा को CSV फ़ाइल में अंततः लिखना होगा, और ऐसा लगता है कि कच्चे तारों पर ऑब्जेक्ट होता है।
मैं सांकेतिक शब्दों में बदलना नहीं है या बिल्कुल भी डेटा को डिकोड, तो ऐसा होता है (के बाद मैं एक सरणी के लिए स्ट्रिंग कहा जाता आइटम जोड़ दिया है):
for item in items:
#item = [x.encode('latin-1') for x in item]
cleancsv.writerow(item)
File "clean_up_barnet.py", line 104, in <module>
cleancsv.writerow(item)
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2022' in position 43: ordinal not in range(128)
मैं एक ही त्रुटि भले ही मैं लैटिन -1 लाइन को अपूर्ण करें।
क्या आप दो बार 'डीकोड' कर रहे हैं? – katrielalex
मुझे ऐसा नहीं लगता है। पिछली पंक्ति xlrd मॉड्यूल से x = table.cell_value (पंक्ति, col) है, हालांकि - शायद यह कुछ मजेदार कर रहा है? – AP257