如何处理UTF-8编码的字符串和BeautifulSoup?
我该如何把Unicode字符串中的HTML实体替换成正确的Unicode呢?
u'"HAUS Kleider" - Über das Bekleiden und Entkleiden, das VerhŸllen und Veredeln'
变成
u'"HAUS-Kleider" - Über das Bekleiden und Entkleiden, das Verhüllen und Veredeln'
补充说明
其实这些实体是错的。看起来是BeautifulSoup搞错了。
所以问题是:如何处理UTF-8编码的字符串和BeautifulSoup?
from BeautifulSoup import BeautifulSoup
f = open('path_to_file','r')
lines = [i for i in f.readlines()]
soup = BeautifulSoup(''.join(lines))
allArticles = []
for row in rows:
l =[]
for r in row.findAll('td'):
l += [r.string] # here things seem to go wrong
allArticles+=[l]
Ü -> Ÿ
应该是 Ü
,但实际上我并不想改变编码。
>>> soup.originalEncoding
'utf-8'
但是我无法生成一个正确的Unicode字符串。
3 个回答
1
htmlentitydefs.entitydefs["quot"]
返回的是
'"'
这其实是一个字典,它的作用是把一些特殊的符号(实体)转换成它们真正的字符。
你可以在这个基础上继续进行其他操作。
0
好吧,这个问题其实很简单,我得承认。我在交互式解释器中使用的是一个旧版本的 rows
。我不知道里面有什么问题,但这是正确的代码:
from BeautifulSoup import BeautifulSoup
f = open('path_to_file','r')
lines = [i for i in f.readlines()]
soup = BeautifulSoup(''.join(lines))
rows = soup.findAll('tr')
allArticles = []
for row in rows:
l =[]
for r in row.findAll('td'):
l += [r.string]
allArticles+=[l]
真是丢脸啊!