Python र pandas मा नेपाली टेक्स्टको इन्कोडिङ ठीक गर्नुस्

pandas ले नेपालीको सट्टा नेपाल पढ्छ, UnicodeDecodeError दिएर रोकिन्छ, वा एक्सपोर्ट गरेको CSV Excel मा गलत देखिन्छ? Python मा encoding प्यारामिटरले टेक्स्ट सही रहन्छ कि बिग्रन्छ भन्ने तय गर्छ। यहाँ सामान्य अवस्था छन् – र बिग्रिएको फाइल माथि ब्राउजरमै ठीक गर्न सकिन्छ।

टेक्स्ट र यी फाइलहरू चल्छन्:

  • CSV
  • TXT
  • JSON
  • XML
  • SRT
  • VTT
  • SMI
  • TSV
  • MD
  • HTML
  • SQL
  • LOG

जस्तै Excel बाट निकालिएका फाइल, डाटाबेस डम्प, सबटाइटल वा वेबसाइटको कोड।

ठीक पार्नुहोस्

  1. फाइल तानेर ल्याउनुहोस् वा टेक्स्ट टाँस्नुहोस्
  2. आफैं ठीक हुन्छ
  3. कपी वा डाउनलोड गर्नुहोस्
वा फाइल यहाँ तानेर ल्याउनुहोस्
  • कुनै अपलोड छैन। फाइलहरू तपाईंकै ब्राउजरमा ठीक हुन्छन् र तपाईंको उपकरणबाट बाहिर जाँदैनन्।

  • सर्भर EU मा। Mojibuster फिनल्यान्ड (EU) को एउटा सर्भरमा चल्छ, त्यसैले युरोपको सामान्य डाटा संरक्षण नियमन (GDPR) लागू हुन्छ। GDPR पढ्नुहोस् (EUR-Lex, अंग्रेजीमा)

पढ्दा 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 ले ठीक गर्नुस्, अनि पढ्नुस्।

pandas बाट आएको CSV, BOM बिना Excel मा खोलिएको

अघि

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 ले बिग्रिएका अक्षर मात्र बदल्छ। कमा, उद्धरण र नयाँ पङ्क्ति जस्ताको तस्तै रहन्छन्।

थप गाइड