将Unicode字符串转换为Python中的字符串(包含多余的符号)

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


#1楼

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'

#2楼

这是一个例子: python

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

#3楼

好吧,若是您愿意/准备切换到Python 3(这可能不是因为与某些Python 2代码的向后不兼容),那么您就没必要进行任何转换。 Python 3中的全部文本都用Unicode字符串表示,这也意味着再也不使用u'<text>'语法。 实际上,您还有字节字符串,用于表示数据(能够是编码字符串)。 函数

http://docs.python.org/3.1/whatsnew/3.0.html#text-vs-data-instead-of-unicode-vs-8位 编码

(固然,若是您当前正在使用Python 3,则问题可能与您尝试将文本保存到文件中有关。) spa


#4楼

若是您有Unicode字符串,而且想要将其写入文件或其余序列化形式,则必须首先将其编码为能够存储的特定表示形式。 有几种常见的Unicode编码,例如UTF-16(大多数Unicode字符使用两个字节)或UTF-8(1-4个字节/代码点,取决于字符)等。要将该字符串转换为特定的编码,您能够能够使用: 翻译

>>> s= u'£10'
>>> s.encode('utf8')
'\xc2\x9c10'
>>> s.encode('utf16')
'\xff\xfe\x9c\x001\x000\x00'

能够将此原始字节字符串写入文件。 可是,请注意,在读回它时,您必须知道它所使用的编码,并使用相同的编码对其进行解码。 code

写入文件时,您能够使用编解码器模块摆脱此手动编码/解码过程。 所以,要打开将全部Unicode字符串编码为UTF-8的文件 ,请使用: orm

import codecs
f = codecs.open('path/to/file.txt','w','utf8')
f.write(my_unicode_string)  # Stored on disk as UTF-8

请注意,正在使用这些文件的任何其余文件,若是要读取它们,都必须了解文件的编码格式。 若是您是惟一一个进行读/写的人,那么这不是问题,不然请确保以一种其余任何使用该文件的方式均可以理解的形式书写。 htm

在Python 3中,这种形式的文件访问是默认的,而且内置的open函数将采用编码参数,而且始终以文本模式打开的文件向Unicode字符串(Python 3中的默认字符串对象)转换。 对象


#5楼

若是不须要翻译非ASCII字符,则能够使用编码为ASCII:

>>> a=u"aaaàçççñññ"
>>> type(a)
<type 'unicode'>
>>> a.encode('ascii','ignore')
'aaa'
>>> a.encode('ascii','replace')
'aaa???????'
>>>
相关文章
相关标签/搜索