这就是我所看到的:
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)
答案 0 :(得分:1)
\ xe7似乎是latin1编码中的抑扬符c ç
所以假设你有一个unicode字符串u"\xe7".encode("latin1")
应该给你bytestring "\xe7"
,你也可以选择将它编码为&#34; utf8&#34; u"\xe7".encode("utf8")
会为您提供字节字符串"\xc3\xa7"
...但是可能会或可能不会解决您的问题。但它肯定会给你一个不同的错误
快速而肮脏的解决方案
try:
owner = re.sub('^(AS[0-9]+ )', '', element[2])
except TypeError as e:
print "Weird:",element
答案 1 :(得分:-2)
我一直使用
s.replace(u'\xa0',' ')
在您的情况下,它应该看起来像
s.replace(u'\xe7','whatever')