如何将Unicode字符串(包含额外的字符,如£$等)转换为Python字符串?


当前回答

看到unicodedata.normalize

title = u"Klüft skräms inför på fédéral électoral große"
import unicodedata
unicodedata.normalize('NFKD', title).encode('ascii', 'ignore')
'Kluft skrams infor pa federal electoral groe'

其他回答

看到unicodedata.normalize

title = u"Klüft skräms inför på fédéral électoral große"
import unicodedata
unicodedata.normalize('NFKD', title).encode('ascii', 'ignore')
'Kluft skrams infor pa federal electoral groe'

这里有一个例子:

>>> u = u'€€€'
>>> s = u.encode('utf8')
>>> s
'\xe2\x82\xac\xe2\x82\xac\xe2\x82\xac'

有一个库可以帮助解决Unicode问题,称为ftfy。让我的生活更轻松。

示例1

import ftfy
print(ftfy.fix_text('ünicode'))

output -->
ünicode

例2 - UTF-8

import ftfy
print(ftfy.fix_text('\xe2\x80\xa2'))

output -->
•

例3 - Unicode 代码点

import ftfy
print(ftfy.fix_text(u'\u2026'))

output -->
…

https://ftfy.readthedocs.io/en/latest/

PIP安装ftfy

https://pypi.org/project/ftfy/

>>> text=u'abcd'
>>> str(text)
'abcd'

如果字符串只包含ascii字符。

如果你不需要转换非ASCII字符,你可以使用encode to ASCII:

>>> a=u"aaaàçççñññ"
>>> type(a)
<type 'unicode'>
>>> a.encode('ascii','ignore')
'aaa'
>>> a.encode('ascii','replace')
'aaa???????'
>>>