在Python中打印带重音符的UTF-8网页单词

0 投票
1 回答
1507 浏览
提问于 2025-04-18 12:39

我正在使用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)。

撰写回答