问题:如何在Python中打印Unicode字符?
我想制作一本字典,其中英语单词指向俄语和法语翻译。
如何在Python中打印出unicode字符?另外,如何将Unicode字符存储在变量中?
回答 0
要在Python源代码中包含Unicode字符,可以在字符串的形式中使用Unicode转义字符\u0123
,并在字符串文字前加上’u’前缀。
这是在Python交互式控制台中运行的示例:
>>> print u'\u0420\u043e\u0441\u0441\u0438\u044f'
Россия
如Python Unicode文档中所述,这样声明的字符串是Unicode类型的变量。
如果运行上述命令不能正确显示文本,则可能是您的终端无法显示Unicode字符。
有关从文件读取Unicode数据的信息,请参见以下答案:
回答 1
在Python中打印unicode字符:
直接从python解释器打印unicode字符:
el@apollo:~$ python
Python 2.7.3
>>> print u'\u2713'
✓
Unicode字符u'\u2713'
是一个复选标记。口译员将复选标记打印在屏幕上。
从python脚本打印unicode字符:
把它放在test.py中:
#!/usr/bin/python
print("here is your checkmark: " + u'\u2713');
像这样运行它:
el@apollo:~$ python test.py
here is your checkmark: ✓
如果没有为您显示复选标记,则问题可能出在其他地方,例如终端设置或您正在使用流重定向进行的操作。
将unicode字符存储在文件中:
将此保存到文件: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: é')
运行它,并将输出管道传输到文件:
python foo.py > tmp.txt
打开tmp.txt并查看内部,您会看到以下内容:
el@apollo:~$ cat tmp.txt
e with obfuscation: é
因此,您已将带有混淆标记的unicode e保存到文件中。
回答 2
export PYTHONIOENCODING=UTF-8
在启动python之前执行(此变量控制控制台尝试将字节数据编码为的字节序列)。在内部,Python3默认使用UTF-8(请参阅Unicode HOWTO),所以这不是问题;您可以将Unicode放入字符串中,如其他答案和注释所示。当您尝试将这些数据发送到控制台时,就会发生问题。Python认为您的控制台只能处理ascii。其他一些答案说:“首先将其写入文件”,但请注意,它们为此指定了编码(UTF-8)(因此,Python不会在书写上进行任何更改),然后使用一种读取方法该文件仅散出字节而无需考虑编码,因此起作用。
回答 3
在Python 2中,您u
可以在中u"猫"
使用声明unicode字符串,并分别使用decode()
和encode()
与unicode进行相互转换。
在Python 3中,这要容易得多。在这里可以找到非常好的概述。那场演讲为我澄清了很多事情。
回答 4
考虑到这是Google搜索此主题时的第一个堆栈溢出结果,因此值得一提的u
是,在python 3中Unicode字符串的前缀是可选的。(从最上面的答案复制了Python 2示例)
Python 3(两者均可):
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'
回答 5
我在Windows中使用Portable Winpython,它包含IPython QT控制台,我可以实现以下目标。
>>>print ("結婚")
結婚
>>>print ("おはよう")
おはよう
>>>str = "結婚"
>>>print (str)
結婚
您的控制台解释器应支持unicode才能显示unicode字符。
回答 6
尚未添加的一件事
在Python 2中,如果要打印具有unicode并使用的变量,.format()
请执行此操作(将要格式化的基本字符串设置为u''
:
>>> text = "Université de Montréal"
>>> print(u"This is unicode: {}".format(text))
>>> This is unicode: Université de Montréal
回答 7
这修复了python中的UTF-8打印:
UTF8Writer = codecs.getwriter('utf8')
sys.stdout = UTF8Writer(sys.stdout)
回答 8
将‘+’替换为‘000’。例如,“ U + 1F600”将变为“ U0001F600”,并在Unicode代码前添加“ \”并打印。例:
>>> print("Learning : ", "\U0001F40D")
Learning : 🐍
>>>
检查这也许会帮助 python unicode emoji