在python中打印带有重音符号的编码的utf-8网页单词

时间:2014-07-09 15:09:59

标签: python encoding utf-8 beautifulsoup

我使用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 个答案:

答案 0 :(得分:2)

如果要进行测试,请将其放在文件的顶部

# -*- coding: utf-8 -*-

这是尝试修复错误。

print child.name, child.string.decode('utf-8')

基本上你应该使用decode而不是encode。