2011-12-19 84 views
7

好的,我已經通讀了很多類似的問題,並且我相信我正確地遵循了建議,但不知何故,我的代碼仍然無法正常工作。UnicodeEncodeError:'ascii'編碼解碼器無法在位置126編碼字符u' u2019':序號不在範圍內(128)

我已經解析了一個xml文件。我在這裏讀到,輸出現在是unicode。我正在使用csv寫入器將輸出寫入文件。

因此,在我的代碼中,我試圖在使用Writer之前在utf-8中進行編碼。爲什麼我仍然在作家上遇到錯誤?我的警告,「unicode !!!」直到發生這種錯誤纔會拋出(我正在多個文件上運行這個功能,並且它對大多數人都有效)。但實際上,我不明白爲什麼作家試圖使用ascii,不應該期待utf-8?我用編碼函數中的ascii代替了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文件,我在這裏看到輸出現在是unicode。」顯示如何解析XML。 – 2011-12-19 17:05:14

回答

9

當您致電mystring.encode(...時,它不會更改就地的字符串;它返回一個新的字符串。

+0

叫什麼新字符串? – user1106322 2011-12-19 17:02:05

+0

哦,snap,mystring2 = mystring.encode(...)然後追加mystring2作品!謝謝! – user1106322 2011-12-19 17:04:08

+0

這不叫任何東西;這是一個返回值。原因是(a)字符串(Unicode和字節字符串)是不可變的; (b)即使它們不是,它們也是兩種不同的類型,所以一個Unicode字符串不能轉換成編碼的字節串。 – 2011-12-19 17:06:42

相關問題