我正在运行以下代码来获取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的新手。我已经看过堆栈溢出这样的问题,我没有看到任何问题,所以我发布了这个问题。我该如何解决这个问题?感谢您的帮助。
答案 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