2017-01-05 105 views
2

我已經安裝了Python 2.7.13,PIP和beautifulsoup上Win10。我想將一個帶有html實體的大文件轉換爲Unicode字符,我不知道如何去做(我對Python不太瞭解)。文件內容是這樣的:轉換HTML實體文件爲Unicode(用BeautifulSoup和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)的,但實在是太慢了,不能用一個大的應對文件轉換)。

我會很樂意爲這個任意(離線)解決方案。

回答

2

這是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) 
+0

感謝您的答覆,我需要如何應用到文件中的具體說明。 – greektranslator

+0

好的,回答更新 – eLRuLL

0

BeautifulSoup有一個內置的功能,這樣做的叫.decode()。只需在文件中讀取時將其添加到行尾即可!

實施例:

site_read = site_download.read().decode('utf-8') 
+0

感謝您的回覆,我需要具體說明如何將其應用於文件。 – greektranslator

0
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> 

Document

爲了解析的文檔時,它通入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 字符:

0

感謝你的幫助,我沒有管理與EmEditor中的最新版本,這被證明是相當FA做到這一點很容易ST:

選擇文本>編輯>編碼/解碼選擇 - > HTML/XML字符引用到Unicode