2011-12-19 10 views
7

ठीक है, मैंने कई समान प्रश्नों के माध्यम से पढ़ा है, और मेरा मानना ​​है कि मैं सलाह का सही पालन कर रहा हूं, लेकिन किसी भी तरह मेरा कोड अभी भी काम नहीं कर रहा है।यूनिकोड एन्कोडर त्रुटि: 'ascii' कोडेक स्थिति 126 में चरित्र '2012 'को एन्कोड नहीं कर सकता है: क्रमशः श्रेणी में नहीं (128)

मैंने एक एक्सएमएल फ़ाइल पार्स की है। मैंने यहां पढ़ा है कि आउटपुट अब यूनिकोड है। मैं फाइल में आउटपुट लिखने के लिए सीएसवी लेखक का उपयोग कर रहा हूं।

तो, मेरे कोड में मैंने लेखक का उपयोग करने से पहले utf-8 में एन्कोड करने का प्रयास किया है। मुझे अभी भी लेखक पर त्रुटि क्यों मिलती है? मेरी चेतावनी, "यूनिकोड !!!" जब तक यह त्रुटि नहीं होती है तब तक फेंक नहीं जाता है (मैं इसे कई फाइलों पर चला रहा हूं, और यह सबसे अधिक काम करता है)। असल में, हालांकि, मुझे समझ में नहीं आता कि लेखक एएससीआई का उपयोग करने का प्रयास क्यों कर रहा है, क्या इसे यूटीएफ -8 की उम्मीद नहीं करनी चाहिए? मैंने utf-8 को एन्सी के साथ एन्कोड फ़ंक्शन में केवल किक्स के लिए बदल दिया है। वही परिणाम कृपया सहायता कीजिए!!!

 try: 

      mystring=elem.find('./'+r2+'Description').text 


      if isinstance(mystring, unicode): 
       print("unicode!!!") 
       mystring.encode('utf-8','ignore') 
       datalist.append(mystring) 
      else:  
       datalist.append(mystring) 
     except AttributeError: 
      datalist.append('No text') 

     c.writerow(datalist) 
+1

"मैंने एक एक्सएमएल फ़ाइल पार्स की है। मैंने यहां पढ़ा है कि आउटपुट अब यूनिकोड है।" दिखाएं कि आप XML को कैसे पार्स करते हैं। –

उत्तर

9

जब आप mystring.encode(... पर कॉल करते हैं, तो यह स्ट्रिंग को जगह में नहीं बदल रहा है; यह एक नई स्ट्रिंग देता है।

+0

नई स्ट्रिंग क्या कहा जाता है? – user1106322

+0

ओह स्नैप, mystring2 = mystring.encode (...) फिर mystring2 कार्यों को संलग्न करें! धन्यवाद! – user1106322

+0

इसे कुछ भी नहीं कहा जाता है; यह एक वापसी मूल्य है। कारण यह है कि (ए) तार (यूनिकोड और बाइट-स्ट्रिंग दोनों) अपरिवर्तनीय हैं; (बी) भले ही वे नहीं थे, वे दो अलग-अलग प्रकार हैं, इसलिए यूनिकोड स्ट्रिंग न केवल एन्कोडेड बाइट-स्ट्रिंग में स्थानांतरित हो सकती है। –

संबंधित मुद्दे

 संबंधित मुद्दे