2011-12-19 78 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

相关问题