我的目标是使用beautiful soup读取html文档,将ids
添加到一些标签并将html写回文件。
html文档中有html实体,如☒
代表☒
。当我创建一个漂亮的汤对象时,html实体被转换为☒
。当我使用str(soup)
将汤写回html时,html文件包含☒
而不是☒
。在浏览器中打开它,当我想要☒
时,结果是☒
。
我尝试使用str(soup.encode(formatter='html'))
,它确实转换为UTF-8编码,但浏览器中的html显示xe2x98x92
。
我猜我错过了一些简单的东西。有什么想法吗,如何在美丽的汤处理后保持原始文件中的特殊字符完整?
我明白了。这其实很简单,正如在这个答案中所说的。
必须使用encoding='utf-8'
。链接中的答案:
from bs4 import BeautifulSoup
a=BeautifulSoup('<p class="t5">☒ ₹ 10,000 or $ 133.46</p>')
with open(filename,'w', encoding='utf-8') as infile:
infile.write(str(a)) # OR infile.write(a.prettify())