UnicodeEncodeError:'ascii' 编码无法在位置 126 编码字符 u'\u2019':范围不在 (128) 之内
好的,我看了很多类似的问题,我觉得我按照建议做了,但我的代码还是不行。
我解析了一个xml文件。我在这里看到输出现在是unicode格式。我正在使用csv写入器把输出写入一个文件。
所以,在我的代码里,我在使用writerow之前尝试过用utf-8编码。为什么我在writerow时还是会出错?我的警告“unicode!!!”直到这个错误发生才会出现(我在多个文件上运行这个,绝大多数都能正常工作)。其实,我不明白为什么writerow会尝试使用ascii,难道它不应该期待utf-8吗?我还特意把编码函数里的utf-8换成ascii试了一下,结果还是一样。请帮帮我!!!
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 个回答
9
当你调用 mystring.encode(...
时,它并不是直接修改原来的字符串,而是返回一个新的字符串。