初学者Python&美丽的汤模块:Unicode u2122

时间:2013-10-23 03:38:47

标签: python unicode beautifulsoup

我正在运行以下代码来获取html文件的打开和关闭标记的美化版本。

from bs4 import BeautifulSoup
import csv

soup = BeautifulSoup(open("NATI_front_page.htm"))

print soup.originalEncoding

print (soup.prettify())

但是我收到了这个错误。

File "front_page_pretty.py", line 8, in <module>
File "C:\Python27\lib\encodings\cp437.py", line 12, in encode
return codecs.charmap_encode(input,errors,encoding_map)
nicodeEncodeError: 'charmap' codec can't encode character u'\u2122' in position 61769:   character maps to <undefined>

我想要的是这样的:

<html>
 <body>
  <h1>Hello world</h1>
 </body>
</html>

我是蟒蛇,美丽的汤和unicode的新手。我已经看过堆栈溢出这样的问题,我没有看到任何问题,所以我发布了这个问题。我该如何解决这个问题?感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

我相信这种情况正在发生,因为您正在尝试打印输出。这将尝试强制ascii在美丽汤的结果中的字符。这与这个问题几乎相同:

Beautiful Soup Unicode encode error

希望有所帮助。我建议阅读python如何处理字符编码。一个好的起点是:

http://docs.python.org/2/howto/unicode.html

快乐的编码!

答案 1 :(得分:0)

由于您在Windows和Windows控制台中使用cp437编码,因此您收到错误消息 &安培;如果您只想摆脱错误,请尝试将其添加到您的代码中:

sys.stdout = io.TextIOWrapper(sys.stdout.buffer,'cp437','backslashreplace')

它将为您提供可读的输出,但它不会打印字符u'\ u2122'

您可以从这里了解更多信息:here