繁体   English   中英

Python:如何处理 UnicodeEncodeError?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM