将html实体文件转换为Unicode(使用BeautifulSoup和Python?)



我已经在Win10上安装了Python 2.7.13,pip和beautifulsoup。我想将一个带有html实体的大文件转换为Unicode字符,但我不确定如何去做(我对Python了解不多)。文件内容如下所示:

<b>&#947;&#941;&#961;&#969;&#957;</b>, <i>&#959;&#957;&#964;&#959;&#962;, &#8001;</i>, Wurzel <i>&#915;&#917;&#929;</i>, verwandt mit <i>&#947;&#941;&#961;&#945;&#962;, &#947;&#949;&#961;&#945;&#961;&#972;&#962;, &#947;&#949;&#961;&#945;&#953;&#972;&#962;</i>

我可以用 EmEditor 做一些小部分(使用编辑>编码/解码选择 -> HTML/XML 字符引用 Unicode),但它太慢了,无法应对大文件转换)。

我很乐意为此提供任何(离线)解决方案。

这是

HTML编码的,请尝试使用以下内容:

from HTMLParser import HTMLParser
f = open("myfile.txt")
h = HTMLParser()
new_file_content = h.unescape(f.read())
new_file = open("newfile.txt", 'w')
new_file.write(new_file_content)

BeautifulSoup 有一个内置函数来执行此操作,称为 .decode() 。只需在阅读文件时将其添加到行尾即可!

例:

site_read = site_download.read().decode('utf-8')
import bs4
html = '''<b>&#947;&#941;&#961;&#969;&#957;</b>, <i>&#959;&#957;&#964;&#959;&#962;, &#8001;</i>, Wurzel <i>&#915;&#917;&#929;</i>, verwandt mit <i>&#947;&#941;&#961;&#945;&#962;, &#947;&#949;&#961;&#945;&#961;&#972;&#962;, &#947;&#949;&#961;&#945;&#953;&#972;&#962;</i>'''
soup = bs4.BeautifulSoup(html, 'lxml')

外:

<html><body><b>γέρων</b>, <i>οντος, ὁ</i>, Wurzel <i>ΓΕΡ</i>, verwandt mit <i>γέρας, γεραρός, γεραιός</i></body></html>

公文:

若要分析文档,请将其传递到 BeautifulSoup 构造函数中。你 可以传入字符串或打开的文件句柄:

from bs4 import BeautifulSoup
> 
> soup = BeautifulSoup(open("index.html"))  # you can open you file in here
> 
> soup = BeautifulSoup("<html>data</html>")

首先,文档是 转换为 Unicode,HTML实体转换为 Unicode 字符:

感谢您的帮助,我确实设法使用最新版本的 EmEditor 轻松完成,事实证明它非常快:

选择文本>编辑>编码/解码选择-> HTML/XML 字符对 Unicode 的引用

最新更新