在Python中打印带重音符的UTF-8网页单词
我正在使用BeautifulSoup4获取一个网页的内容,这个内容是用utf-8编码的。问题出现在我尝试打印一个带有重音符的单词时,Python给我抛出了以下错误:
"UnicodeEncodeError: 'ascii' codec can't encode characters in position 3-4: ordinal not in range(128)"
如果我使用 .encode('utf-8'),就不会再出现错误了,但我打印出来的单词也不对,里面出现了像!@%这样的字符,重音符也不见了。
有没有简单的方法可以让我正确打印出带有重音符的单词呢?
代码:
def foo(soup):
children = soup.find('div', {'id': 'test'}).find_all('p')
for child in children:
print child.name, child.string
return '---'
这个错误发生在 child.string
上。
1 个回答
2
如果你想进行测试,就把这个放在文件的最上面。
# -*- coding: utf-8 -*-
这里是一个尝试修复错误的方法。
print child.name, child.string.decode('utf-8')
其实你应该用解码(decode),而不是编码(encode)。