python - utf8 - unicode()




Converter uma string Unicode em uma string em Python(contendo símbolos extras) (6)

Aqui está um código de exemplo

import unicodedata    
raw_text = u"here $%6757 dfgdfg"
convert_text = unicodedata.normalize('NFKD', raw_text).encode('ascii','ignore')

Como você converte uma string Unicode (contendo caracteres extras como £ $, etc.) em uma string Python?


Aqui está um exemplo:

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

Se você tiver uma seqüência de caracteres Unicode e quiser gravar isso em um arquivo ou outro formulário serializado, primeiro será necessário codificá- lo em uma representação específica que possa ser armazenada. Existem várias codificações Unicode comuns, como UTF-16 (usa dois bytes para a maioria dos caracteres Unicode) ou UTF-8 (1-4 bytes / codepoint dependendo do caractere), etc. Para converter essa string em uma codificação específica, você pode usar:

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

Essa seqüência de bytes bruta pode ser gravada em um arquivo. No entanto, observe que, ao lê-lo de volta, você deve saber em que codificação ele está e decodificá-lo usando a mesma codificação.

Ao gravar em arquivos, você pode se livrar deste processo manual de codificação / decodificação usando o módulo de codecs . Então, para abrir um arquivo que codifique todas as strings Unicode em UTF-8 , use:

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

Observe que qualquer outra coisa que esteja usando esses arquivos deve entender em que codificação o arquivo está, se quiser lê-los. Se você é o único a fazer a leitura / escrita, isso não é um problema, caso contrário, certifique-se de escrever de uma forma compreensível por qualquer outra coisa que use os arquivos.

No Python 3, essa forma de acesso a arquivos é o padrão, e a função open interna terá um parâmetro de codificação e sempre será traduzida para / de strings Unicode (o objeto de string padrão no Python 3) para arquivos abertos no modo de texto.


Você pode usar a codificação em ASCII se não precisar traduzir os caracteres não-ASCII:

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

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'

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

Se a string contiver apenas caracteres ascii.







type-conversion