python - पायथन: यूनिकोडडेकोड त्रुटि: 'एएससीआई' कोडेक स्थिति में बाइट 0xef डीकोड नहीं कर सकता 0: क्रमिक नहीं श्रेणी में(128)




unicode utf-8 (2)

मेरे वर्तमान में मेरे अजगर 3 कोड के साथ एक मुद्दा है I

 replace_line('Products.txt', line, tenminus_str)

क्या वह पंक्ति है जिसे मैं यूटीएफ -8 में बदलने की कोशिश कर रहा हूं, लेकिन जब मैं ऐसा करने की कोशिश करता हूं जैसे कि मैं दूसरों के साथ होता, तो मुझे कोई त्रुटि नहीं होती है जैसे कि कोई विशेषता नहीं है और जब मैं जोड़ने का प्रयास करता हूं, उदाहरण के लिए ...

.decode("utf8")

... इसे समाप्त करने के लिए, मुझे अभी भी त्रुटियां मिलती हैं, जो इसे एएससीआई का उपयोग कर रही हैं मैंने अन्य तरीकों की भी कोशिश की जो अन्य लाइनों के साथ काम करते थे जैसे कि IO को जोड़ना infront और के साथ एक अल्पविराम जोड़ना

encoding = 'utf8'

फ़ंक्शन जिसका मैं replace_line के लिए उपयोग कर रहा हूं:

def replace_line(file_name, line_num, text):
    lines = open(file_name, 'r').readlines()
    lines[line_num] = text
    out = open(file_name, 'w')
    out.writelines(lines)
    out.close()

मैं इस मुद्दे को कैसे ठीक करूँगा? कृपया ध्यान दें कि मैं अजगर में बहुत नया हूँ और अच्छी तरह से डीबग करने के लिए पर्याप्त नहीं है।

संपादित करें: 'डुप्लिकेट' की तुलना में इस प्रश्न के लिए अलग तय

2 संपादित करें: फ़ंक्शन के साथ मेरे पास अब एक और त्रुटि है।

File "FILELOCATION", line 45, in refill replace_line('Products.txt', str(line), tenminus_str) 

File "FILELOCATION", line 6, in replace_line lines[line_num] = text

TypeError: list indices must be integers, not str 

इसका क्या अर्थ है और मैं इसे कैसे ठीक कर सकता हूं?


अपने फ़ंक्शन को इसमें बदलें:

def replace_line(file_name, line_num, text):
    with open(file_name, 'r', encoding='utf8') as f:
        lines = f.readlines()
    lines[line_num] = text
    with open(file_name, 'w', encoding='utf8') as out:
        out.writelines(lines)

encoding='utf8' यूटीएफ 8 encoding='utf8' आपकी यूटीएफ -8 फाइल को सही ढंग से डीकोड करेगा।

स्वतः ब्लॉक होने पर फाइल को बंद कर देता है।

चूंकि आपकी फ़ाइल \xef साथ शुरू हुई, संभवतः शुरुआत में एक यूटीएफ -8-एन्कोडिंग बाइट ऑर्डर मार्क (बीओएम) वर्ण है। उपरोक्त कोड को आउटपुट पर बनाए रखा जाएगा, लेकिन अगर आप नहीं चाहते हैं कि यह इनपुट एन्कोडिंग के लिए utf-8-sig इस्तेमाल करे। तो यह स्वचालित रूप से निकाल दिया जाएगा


कोडिंग समस्याओं को संभालना आप अपने सिर पर निम्न सेटिंग्स को जोड़ने का प्रयास कर सकते हैं

import sys
reload(sys)
sys.setdefaultencoding('utf-8')
Type = sys.getfilesystemencoding()




ascii