Quero fazer um dicionário onde palavras em inglês apontem para traduções em russo e francês.
Como faço para imprimir caracteres Unicode em Python? Além disso, como você armazena caracteres Unicode em uma variável?
Quero fazer um dicionário onde palavras em inglês apontem para traduções em russo e francês.
Como faço para imprimir caracteres Unicode em Python? Além disso, como você armazena caracteres Unicode em uma variável?
Respostas:
Para incluir caracteres Unicode em seu código-fonte Python, você pode usar caracteres de escape Unicode na forma \u0123
de sua string e prefixar a string literal com 'u'.
Aqui está um exemplo em execução no console interativo Python:
>>> print u'\u0420\u043e\u0441\u0441\u0438\u044f'
Россия
Strings declaradas assim são variáveis do tipo Unicode, conforme descrito na documentação do Python Unicode .
Se a execução do comando acima não exibir o texto corretamente para você, talvez seu terminal não seja capaz de exibir caracteres Unicode.
Para obter informações sobre como ler dados Unicode de um arquivo, consulte esta resposta:
mystr
? então como imprimir isso?
print your_unicode_characters.encode('utf-8')
Imprima um caractere Unicode diretamente do interpretador Python:
el@apollo:~$ python
Python 2.7.3
>>> print u'\u2713'
✓
O caractere Unicode u'\u2713'
é uma marca de seleção. O intérprete imprime a marca de seleção na tela.
Imprima um caractere Unicode de um script Python:
Coloque isso em test.py:
#!/usr/bin/python
print("here is your checkmark: " + u'\u2713');
Execute assim:
el@apollo:~$ python test.py
here is your checkmark: ✓
Se não houver uma marca de seleção para você, o problema pode estar em outro lugar, como as configurações do terminal ou algo que você está fazendo com o redirecionamento de fluxo.
Armazene caracteres Unicode em um arquivo:
Salve no arquivo: foo.py:
#!/usr/bin/python -tt
# -*- coding: utf-8 -*-
import codecs
import sys
UTF8Writer = codecs.getwriter('utf8')
sys.stdout = UTF8Writer(sys.stdout)
print(u'e with obfuscation: é')
Execute-o e canalize a saída para o arquivo:
python foo.py > tmp.txt
Abra tmp.txt e olhe dentro, você verá isto:
el@apollo:~$ cat tmp.txt
e with obfuscation: é
Assim, você salvou em um arquivo o Unicode e com uma marca de ofuscação.
Se você está tentando print()
Unicode e recebendo erros de codec ascii , verifique esta página , cujo TLDR é feito export PYTHONIOENCODING=UTF-8
antes de iniciar o python (esta variável controla a sequência de bytes que o console tenta codificar seus dados de string). Internamente, Python3 usa UTF-8 por padrão (veja o Unicode HOWTO), então esse não é o problema; você pode simplesmente colocar Unicode em strings, como visto nas outras respostas e comentários. É quando você tenta obter esses dados para o console que o problema acontece. Python acha que seu console só pode lidar com ascii. Algumas das outras respostas dizem: "Grave em um arquivo primeiro", mas observe que eles especificam a codificação (UTF-8) para fazer isso (portanto, o Python não muda nada na escrita) e, em seguida, usa um método para leitura o arquivo que apenas cospe os bytes sem nenhuma preocupação com a codificação, e é por isso que funciona.
No Python 2, você declara strings Unicode com a u
, as in u"猫"
e usa decode()
e encode()
para traduzir de e para Unicode, respectivamente.
É um pouco mais fácil no Python 3. Uma ótima visão geral pode ser encontrada aqui . Essa apresentação esclareceu muitas coisas para mim.
Considerando que este é o primeiro resultado de estouro de pilha ao pesquisar este tópico no Google, vale a pena mencionar que o prefixo u
strings Unicode é opcional no Python 3. (o exemplo do Python 2 foi copiado da resposta principal)
Python 3 (ambos funcionam):
print('\u0420\u043e\u0441\u0441\u0438\u044f')
print(u'\u0420\u043e\u0441\u0441\u0438\u044f')
Python 2:
print u'\u0420\u043e\u0441\u0441\u0438\u044f'
Eu uso o Winpython portátil no Windows, ele inclui o console IPython QT, eu poderia conseguir o seguinte.
>>>print ("結婚")
結婚
>>>print ("おはよう")
おはよう
>>>str = "結婚"
>>>print (str)
結婚
seu interpretador de console deve suportar Unicode para mostrar caracteres Unicode.
Só mais uma coisa que ainda não foi adicionada
No Python 2, se você quiser imprimir uma variável que tenha unicode e use .format()
, faça isso (faça da string base que está sendo formatada uma string Unicode com u''
:
>>> text = "Université de Montréal"
>>> print(u"This is unicode: {}".format(text))
>>> This is unicode: Université de Montréal
Substitua '+' por '000' . Por exemplo, 'U + 1F600' se tornará 'U0001F600' e incluirá "\" no prefixo do código Unicode e imprimirá. Exemplo:
>>> print("Learning : ", "\U0001F40D")
Learning : 🐍
>>>
Verifique isso talvez ajude python emoji Unicode