[英]Python: How to handle UnicodeEncodeError?
这就是我所看到的:
Traceback (most recent call last):
File "/home/user/tools/executeJobs.py", line 86, in <module>
owner = re.sub('^(AS[0-9]+ )', '', str(element[2]))
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe7' in position 13: ordinal not in range(128)
在错误行中,您已经看到有问题的行。 str(array[0])
从来没有让我失望过。 如何解决这个问题? 快速而肮脏的解决方案很好。
更新:
元素 [2] 来自这个二进制 .dat 列表:http ://github.com/maxmind/geoip-api-php/blob/master/tests/data/……也可以在这里使用: http : //dev.maxmind.com /geoip/legacy/geolite (表格底部的 IP/ASN)
\\xe7 似乎是 latin1 编码中的抑扬符 c ç
所以假设你有一个 unicode 字符串u"\\xe7".encode("latin1")
应该给你字节"\\xe7"
,你也可以选择将它编码为 "utf8" u"\\xe7".encode("utf8")
会给你字节"\\xc3\\xa7"
... 然而,这可能会也可能不会解决你的问题。 但它肯定会给你一个不同的错误
快速而肮脏的解决方案
try:
owner = re.sub('^(AS[0-9]+ )', '', element[2])
except TypeError as e:
print "Weird:",element
我一直用
s.replace(u'\xa0',' ')
在你的情况下,它应该看起来像
s.replace(u'\xe7','whatever')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.