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

Python 如何将unicode文本转换为普通文本,python,unicode,web-scraping,beautifulsoup,ascii,Python,Unicode,Web Scraping,Beautifulsoup,Ascii,我正在用Python学习美丽的汤 我正试图解析一个简单的网页与书籍列表 例如 但是我想要正确的文本,由 s = elems[0].getText() print s >>>The Car Hacker’s Handbook 如何修改我的代码,以便输出“汽车黑客手册”而不是“u'TheCarHacker\u2019sHandbook” 请帮忙。您尝试过使用编码方法吗 elems[0].getText().encode('utf-8') 有关unicode和python的更多信

我正在用Python学习美丽的汤

我正试图解析一个简单的网页与书籍列表

例如

但是我想要正确的文本,由

s = elems[0].getText()
print s
>>>The Car Hacker’s Handbook
如何修改我的代码,以便输出“汽车黑客手册”而不是“u'TheCarHacker\u2019sHandbook”


请帮忙。

您尝试过使用编码方法吗

elems[0].getText().encode('utf-8')
有关unicode和python的更多信息,请参见

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

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

import unicodedata

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

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

您得到的结果没有问题。这是一个unicode字符串,带有一个奇特的撇号字符。谢谢,@Selcuk。但是如何使用字符串“u'The Car Hacker\u2019s Handbook'”并将其存储在文件/数据库中?它会被妥善保存吗?我的意思是我尝试了
f.write(elems[0].getText())
,我得到了unicodeincodeerror。谢谢,@Selcuk。我得到了它。我使用
elems[0].getText().encode('utf-8')
将其保存到文件或数据库中。如果要在数据库中存储unicode文本,请将列设置为文本类型,并设置数据库适配器来为您处理de和编码。
io
模块包含在写入和读取时在unicode和字节之间转换的文本文件类型。谢谢。我尝试了
elems[0].getText().encode('utf-8')
。成功了。Python终端将其打印为
“汽车黑客手册”
,但如果写入文件,则文件内容中包含
汽车黑客手册。为了正确起见,我编辑了答案。@madhusudan__k欢迎您这样做。如果您认为您通过这个答案解决了所需的问题,请不要忘记通过单击投票计数正下方的箭头来接受答案。@madhusudan_k python没有utf-8编码,因此您(在python控制台上)使用unicode字符串调用
chardet.detect()
,这是没有意义的。它用于检测字节字符串中的编码。它还删除了“撇号”,因此书名成为“汽车黑客手册”。
elems[0].getText().encode('utf-8')
>>> import chardet
>>> chardet.detect(elems[0].getText()) 
{'confidence': 0.5, 'encoding': 'utf-8'}
import unicodedata

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