如何将unicode文本转换为普通文本

时间:2016-04-14 12:55:08

标签: python unicode web-scraping beautifulsoup ascii

我正在学习Python中的美丽汤。

我正在尝试用一系列书籍解析一个简单的网页。

E.g

<a href="https://www.nostarch.com/carhacking">The Car Hacker’s Handbook</a>

我使用以下代码。

import requests, bs4
res = requests.get('http://nostarch.com')
res.raise_for_status()
nSoup = bs4.BeautifulSoup(res.text,"html.parser")
elems = nSoup.select('.product-body a')

#elems[0] gives
<a href="https://www.nostarch.com/carhacking">The Car Hacker\u2019s Handbook</a>

#elems[0].getText() gives
u'The Car Hacker\u2019s Handbook'

但我想要正确的文字,

s = elems[0].getText()
print s
>>>The Car Hacker’s Handbook

如何修改我的代码以提供“The Car Hacker's Handbook”输出而不是“u'The Car Hacker \ u2019s Handbook”?

请帮助。

2 个答案:

答案 0 :(得分:3)

您是否尝试过使用编码方法?

elems[0].getText().encode('utf-8')

有关unicode和python的更多信息,请参阅https://docs.python.org/2/howto/unicode.html

此外,要发现您的字符串是否真的是utf-8编码,您可以使用chardet并运行以下命令:

>>> import chardet
>>> chardet.detect(elems[0].getText()) 
{'confidence': 0.5, 'encoding': 'utf-8'}

答案 1 :(得分:-2)

你可以尝试

import unicodedata

def normText(unicodeText):
return unicodedata.normalize('NFKD', unicodeText).encode('ascii','ignore')

这会将unicodetext转换为纯文本,您可以写入文件。