1

我正在运行以下代码来获取 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>

我是 python、漂亮的汤和 unicode 的新手。我在堆栈溢出中查看了这样的问题,但我没有看到任何问题,所以我发布了这个问题。我将如何解决这个问题?提前感谢您的帮助。

4

2 回答 2

1

我相信这是因为您正在尝试打印输出。这将尝试在漂亮汤的结果中强制使用 ascii 字符。这与这个问题几乎相同:

Beautiful Soup Unicode 编码错误

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

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

快乐编码!

于 2013-10-23T03:50:58.610 回答
0

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

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

它会给你一个可读的输出,虽然它不会打印字符 u'\u2122'

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

于 2014-01-02T20:55:06.830 回答