python - पाइथन के साथ पांडस में सीएसवी फ़ाइल पढ़ने पर यूनिकोड डीकोड त्रुटि





csv pandas unicode (4)


थोड़ी देर के साथ संघर्ष किया और सोचा कि मैं इस सवाल पर पोस्ट करूंगा क्योंकि यह पहला खोज परिणाम है। Pandas read_csv को एन्कोडिंग = 'आईएसओ -885 9 -1 "टैग जोड़ना काम नहीं किया, और न ही कोई अन्य एन्कोडिंग किया, एक यूनिकोडडेकोड एरर दिया।

यदि आप pd.read_csv () पर फ़ाइल हैंडल पास कर रहे हैं, तो आपको फ़ाइल पर एन्कोडिंग = विशेषता डालना होगा, read_csv में नहीं। हिंडसाइट में स्पष्ट, लेकिन नीचे ट्रैक करने के लिए एक सूक्ष्म त्रुटि।

मैं एक प्रोग्राम चला रहा हूं जो 30,000 समान फाइलों को संसाधित कर रहा है। उनमें से एक यादृच्छिक संख्या इस त्रुटि को रोक रही है और उत्पादन कर रही है ...

   File "C:\Importer\src\dfman\importer.py", line 26, in import_chr
     data = pd.read_csv(filepath, names=fields)
   File "C:\Python33\lib\site-packages\pandas\io\parsers.py", line 400, in parser_f
     return _read(filepath_or_buffer, kwds)
   File "C:\Python33\lib\site-packages\pandas\io\parsers.py", line 205, in _read
     return parser.read()
   File "C:\Python33\lib\site-packages\pandas\io\parsers.py", line 608, in read
     ret = self._engine.read(nrows)
   File "C:\Python33\lib\site-packages\pandas\io\parsers.py", line 1028, in read
     data = self._reader.read(nrows)
   File "parser.pyx", line 706, in pandas.parser.TextReader.read (pandas\parser.c:6745)
   File "parser.pyx", line 728, in pandas.parser.TextReader._read_low_memory (pandas\parser.c:6964)
   File "parser.pyx", line 804, in pandas.parser.TextReader._read_rows (pandas\parser.c:7780)
   File "parser.pyx", line 890, in pandas.parser.TextReader._convert_column_data (pandas\parser.c:8793)
   File "parser.pyx", line 950, in pandas.parser.TextReader._convert_tokens (pandas\parser.c:9484)
   File "parser.pyx", line 1026, in pandas.parser.TextReader._convert_with_dtype (pandas\parser.c:10642)
   File "parser.pyx", line 1046, in pandas.parser.TextReader._string_convert (pandas\parser.c:10853)
   File "parser.pyx", line 1278, in pandas.parser._string_box_utf8 (pandas\parser.c:15657)
 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xda in position 6: invalid    continuation byte

इन फ़ाइलों का स्रोत / निर्माण सभी एक ही स्थान से आते हैं। आयात के साथ आगे बढ़ने के लिए इसे सही करने का सबसे अच्छा तरीका क्या है?




read_csv विभिन्न प्रारूपों में फ़ाइलों से निपटने के लिए एक encoding विकल्प लेता है। मैं ज्यादातर read_csv('file', encoding = "ISO-8859-1") लिए read_csv('file', encoding = "ISO-8859-1") , या वैकल्पिक रूप से encoding = "utf8" उपयोग करता read_csv('file', encoding = "ISO-8859-1") , और आम तौर पर to_csv utf-8 to_csv

आप 'ISO-8859-1' बजाय alias 'latin1' का भी उपयोग कर सकते हैं।

प्रासंगिक पांडस दस्तावेज , सीएसवी फाइलों पर पायथन दस्तावेज़ उदाहरण , और एसओ पर यहां संबंधित प्रश्नों के बहुत सारे देखें।




सभी समाधानों के सरलतम:

  • सब्लिमे टेक्स्ट एडिटर में सीएसवी फ़ाइल खोलें।
  • फ़ाइल को utf-8 प्रारूप में सहेजें।

शानदार में, फ़ाइल पर क्लिक करें -> एन्कोडिंग के साथ सहेजें -> यूटीएफ -8

फिर, आप अपनी फ़ाइल को सामान्य रूप से पढ़ सकते हैं:

import pandas as pd
data = pd.read_csv('file_name.csv', encoding='utf-8')

संपादित करें 1:

यदि कई फाइलें हैं, तो आप शानदार कदम छोड़ सकते हैं।

बस फ़ाइल का उपयोग कर पढ़ें

data = pd.read_csv('file_name.csv', encoding='utf-8')

और अन्य विभिन्न एन्कोडिंग प्रकार हैं:

encoding = "cp1252"
encoding = "ISO-8859-1"



%reset परिभाषित चर को साफ़ %reset लगता है।





python csv pandas unicode