पढ्दा UnicodeDecodeError
pd.read_csv ले UTF-8 मानेर चल्छ। फाइल अर्कै इन्कोडिङमा सेभ भएको छ भने pandas UnicodeDecodeError: 'utf-8' codec can't decode byte दिएर रोकिन्छ। पुराना नेपाली फाइल प्रायः Windows-1252 (ANSI) मा हुन्छन्, वा Preeti जस्तो फन्टका अंग्रेजी अक्षरमा। तब इन्कोडिङ स्पष्ट भन्नुस्:
pd.read_csv('data.csv', encoding='cp1252')Excel र Windows का पुराना फाइलका लागि।encoding='latin-1'कहिल्यै फेल हुँदैन, तर€र टाइपोग्राफिक उद्धरण गलत पढ्छ – सामान्यतयाcp1252राम्रो हो।- इन्कोडिङ थाहा छैन भने फाइल Mojibuster मा हाल्नुस्: त्यसले पहिचान गरेर फाइल UTF-8 मा सेभ गर्छ।
DataFrame मा नेपालीको सट्टा न
DataFrame मा नेपाल देखिन्छ भने UTF-8 फाइल latin-1 वा cp1252 बाट पढिएको हो – वा डाटा पहिल्यै बिग्रिएको थियो। पहिलो अवस्थामा encoding='utf-8' पर्याप्त छ। डाटा आफैं बिग्रिएको छ भने एउटै मानका लागि value.encode('cp1252').decode('utf-8') काम गर्छ, तर Windows-1252 मा परिभाषित नभएका बाइट हराएको छ भने, वा मिसिएको डाटामा, फेल हुन्छ। सजिलो तरिका: पहिले फाइल Mojibuster ले ठीक गर्नुस्, अनि पढ्नुस्।
अघि
gfd 7]ufgf sIff
/fd zdf{ sf7df8f}+
;Ltf yfkf kf]v/fपछि
नाम ठेगाना कक्षा राम शर्मा काठमाडौं सीता थापा पोखरा
to_csv: Excel मा फाइल गलत देखिन्छ
df.to_csv('export.csv') ले BOM नभएको UTF-8 लेख्छ। Excel ले यस्तो फाइल ANSI मानेर खोल्छ र नेपाली नेपाल बन्छ। encoding='utf-8-sig' ले pandas ले BOM लेख्छ र Excel ले UTF-8 चिन्छ। थप: Excel र CSV मा नेपाली फन्टको समस्या।
Windows मा open()
open('file.txt') ले encoding बिना Windows मा सिस्टम इन्कोडिङ प्रयोग गर्छ, प्रायः cp1252। Linux मा चल्ने स्क्रिप्टले Windows मा उही UTF-8 नेपाली फाइल न का रूपमा पढ्छ वा त्रुटि दिन्छ। त्यसैले सधैं encoding='utf-8' दिनुस् वा वातावरण चर PYTHONUTF8=1 मिलाउनुस्। PEP 686 अनुसार भविष्यका Python मा UTF-8 डिफल्ट हुनेछ।
requests बाट वेब डाटा
requests ले response.text Content-Type हेडरबाट तय गर्छ। यदि टेक्स्ट जवाबमा character set लेखिएको छैन भने त्यसले ISO-8859-1 मान्छ र नेपाली UTF-8 पेजमा नेपाल देखिन्छ। पहिले response.encoding = 'utf-8' मिलाउनुस्, वा response.json() प्रयोग गर्नुस् जसले UTF-8 आफैं चिन्छ।
यदि टेक्स्ट errors='replace' सहित देवनागरी नभएको इन्कोडिङमा लेखिएको हो भने फाइलमा ? छन् – तब जानकारी हराइसकेको छ, मोजिबाके के हो हेर्नुस्।
धेरै सोधिने प्रश्नहरू
यसका लागि Python लाइब्रेरी छ?
छ, ftfy ले Python कोडमा mojibake ठीक गर्छ। प्रोग्रामिङ बिना एउटा फाइलका लागि Mojibuster छिटो छ र सेभ गर्नुअघि हरेक परिवर्तन देखाउँछ।
मलाई सबैभन्दा बढी कुन encoding मान चाहिन्छ?
utf-8, utf-8-sig (BOM सहितको UTF-8), cp1252 (Windows, पश्चिमी युरोप), latin-1 र utf-16। ठूला-साना अक्षर र हाइफनले फरक पार्दैन।
के डिलिमिटर र संख्या जस्ताको तस्तै रहन्छन्?
रहन्छन्। Mojibuster ले बिग्रिएका अक्षर मात्र बदल्छ। कमा, उद्धरण र नयाँ पङ्क्ति जस्ताको तस्तै रहन्छन्।