2013-10-31 8 views
68

यहाँ मेरी कोड, हैUnicodeDecodeError: 'utf-8' कोडेक बाइट डिकोड नहीं कर सकते हैं

for line in open('u.item'): 
#read each line 

जब भी मैं इस कोड को यह निम्न त्रुटि देता चलाएँ:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 2892: invalid continuation byte 

मैं का समाधान करने की कोशिश की यह और खुले() में एक अतिरिक्त पैरामीटर जोड़ें, कोड जैसा दिखता है;

for line in open('u.item', encoding='utf-8'): 
#read each line 

लेकिन फिर भी यह वही त्रुटि देता है। मुझे तब क्या करना चाहिए! कृपया मदद करे।

+1

खराब डेटा एन्कोड किए गए डेटा को मैं मानता हूं। –

+4

या बस यूटीएफ -8 डेटा नहीं। –

उत्तर

159

मार्क रान्ससम द्वारा सुझाए गए अनुसार, मुझे उस समस्या के लिए सही एन्कोडिंग मिली। एन्कोडिंग "आईएसओ -885 9 -1" थी, इसलिए open("u.item", encoding="utf-8") को open('u.item', encoding = "ISO-8859-1") के साथ बदलकर समस्या हल हो जाएगी।

+5

अंतर्निहित (पीईपी 20) से स्पष्ट बेहतर है। –

+0

"आईएसओ -885 9 -1" मेरे लिए काम किया .. – Priyansh

18

आपकी फ़ाइल में वास्तव में utf-8 एन्कोडेड डेटा नहीं है, इसमें कुछ अन्य एन्कोडिंग शामिल है। यह पता लगाएं कि एन्कोडिंग क्या है और इसे open कॉल में उपयोग करें।

विंडोज -1252 एन्कोडिंग में उदाहरण के लिए 0xe9 चरित्र é होगा।

+2

तो, मैं यह कैसे पता लगा सकता हूं कि यह एन्कोडिंग क्या है! मैं linux – SujitS

+1

का उपयोग कर रहा हूं जो ऐसा करने का कोई तरीका नहीं है जो हमेशा काम करता है, लेकिन इस प्रश्न का उत्तर देखें: http://stackoverflow.com/questions/436220/python-is-there-a-way-to-determine- एन्कोडिंग-ऑफ-टेक्स्ट-फाइल – RemcoGerlich

1

कोई इन की तलाश में, इस अजगर 3 में CSV फ़ाइल में परिवर्तित करने के लिए एक उदाहरण है:

try: 
    inputReader = csv.reader(open(argv[1], encoding='ISO-8859-1'), delimiter=',',quotechar='"') 
except IOError: 
    pass 
9

इस प्रयास करें निम्नलिखित आप Python 2 उपयोग कर रहे हैं पांडा

pd.read_csv('u.item', sep='|', names=m_cols , encoding='latin-1') 
6

का उपयोग कर पढ़ने के लिए समाधान होगा:

import io 
for line in io.open("u.item", encoding="ISO-8859-1"): 
    # do something 

क्योंकि encoding पैरामीटर डी

 
TypeError: 'encoding' is an invalid keyword argument for this function 
+0

लेकिन यह संस्करण 3 – SujitS

+1

हाँ मुझे पता है। मैंने सोचा कि यह 'पायथन 2' – Jeril

+0

का उपयोग करने वाले लोगों के लिए उपयोगी हो सकता है, जो कि पाइथन 3 में मेरे लिए काम किया गया है, साथ ही – fenkerbb

3

भी मेरे लिए काम किया, ISO 8859-1 एक बहुत बचाने के लिए, hahaha मुख्य रूप से वाक् पहचान एपीआई

का उपयोग कर यदि जा रहा है,: open() साथ काम oesn't, आपको निम्न त्रुटि हो रही होगी उदाहरण:

सभी समाधान की
file = open('../Resources/' + filename, 'r', encoding="ISO-8859-1"); 
+0

आप सही हो सकते हैं कि ओपी आईएसओ 885 9 -1 पढ़ रहा है, जैसा कि त्रुटि संदेश में 0xe9 (é) से लिया जा सकता है, लेकिन आपको यह समझाया जाना चाहिए कि आपका समाधान क्यों काम करता है। भाषण मान्यता एपीआई का संदर्भ मदद नहीं करता है। – RolfBly

0

सरल:

Use Pandas to read file, its very simple:

import pandas as pd 
data = pd.read_csv('file_name.csv', encoding='utf-8') 
संबंधित मुद्दे