我在处理从不同网页(在不同站点上)获取的文本中的 unicode 字符时遇到问题。我正在使用美丽汤。
问题是错误并不总是可重现的;它有时可以处理某些页面,有时,它会通过抛出一个UnicodeEncodeError
。我已经尝试了几乎所有我能想到的方法,但我还没有找到任何可以一致工作且不会引发某种 Unicode 相关错误的方法。
导致问题的代码部分之一如下所示:
agent_telno = agent.find('div', 'agent_contact_number')
agent_telno = '' if agent_telno is None else agent_telno.contents[0]
p.agent_info = str(agent_contact + ' ' + agent_telno).strip()
以下是运行上面的代码片段时在某些字符串上生成的堆栈跟踪:
Traceback (most recent call last):
File "foobar.py", line 792, in <module>
p.agent_info = str(agent_contact + ' ' + agent_telno).strip()
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa0' in position 20: ordinal not in range(128)
我怀疑这是因为某些页面(或更具体地说,某些站点的页面)可能已编码,而其他页面可能未编码。所有网站均位于英国,并提供供英国消费的数据 - 因此不存在与内化或处理非英语文本相关的问题。
有谁知道如何解决这个问题,以便我能够始终如一地解决这个问题?
阅读Python统一码指南 https://docs.python.org/2.7/howto/unicode.html。这个错误是第一个例子 https://docs.python.org/2.7/howto/unicode.html#the-unicode-type.
不使用str()
从 unicode 转换为编码文本/字节。
相反,使用.encode() http://docs.python.org/library/stdtypes.html#str.encode对字符串进行编码:
p.agent_info = u' '.join((agent_contact, agent_telno)).encode('utf-8').strip()
或者完全使用 unicode 工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)