如何在Python中打印Unicode字符?

时间:2012-05-13 05:00:57

标签: python python-unicode

我想创建一个字典,其中英语单词指向俄语和法语翻译。

如何在Python中打印出unicode字符?另外,如何在变量中存储unicode字符?

9 个答案:

答案 0 :(得分:86)

要在Python源代码中包含Unicode字符,您可以在字符串中使用\u0123形式的Unicode escape characters,并在字符串文字前加上“u”。

以下是在Python交互式控制台中运行的示例:

>>> print u'\u0420\u043e\u0441\u0441\u0438\u044f'
Россия

像这样声明的字符串是Unicode类型变量,如Python Unicode documentation中所述。

如果运行上述命令无法正确显示文本,则可能是您的终端无法显示Unicode字符。

有关从文件中读取Unicode数据的信息,请参阅以下答案:

Character reading from file in Python

答案 1 :(得分:43)

在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 :(得分:25)

如果您尝试使用print() Unicode并获取ascii编解码器错误,请查看this page,其中TLDR为export PYTHONIOENCODING=UTF-8在启动python之前(此变量控制控制台尝试将字符串数据编码为的字节序列)。在内部,Python3默认使用UTF-8(参见the Unicode HOWTO),这不是问题所在;您可以将Unicode放在字符串中,如其他答案和注释中所示。当您尝试将此数据发送到控制台时发生问题。 Python认为你的控制台只能处理ascii。其他一些答案说,"将其写入文件,首先是"但请注意,它们指定了编码(UTF-8)(因此,Python不会在写入时改变任何内容),然后使用一种方法来读取只是吐出字节而不考虑编码的文件,这就是为什么有效。

答案 3 :(得分:18)

在Python 2中,您使用u声明unicode字符串,与u"猫"一样,并使用decode()encode()分别转换为unicode和从unicode转换。

在Python 3中它更容易。可以找到一个非常好的概述here。那个演讲为我澄清了很多东西。

答案 4 :(得分:5)

'+'替换为'000'。例如,'U + 1F600'将成为'U0001F600',并在Unicode代码前添加“ \” 并打印。 示例:

>>> print("Learning : ", "\U0001F40D")
Learning :  ?
>>> 

选中此选项可能会有所帮助 python unicode emoji

答案 5 :(得分:4)

我在Windows中使用Portable winpython,它包含IPython QT控制台,我可以实现以下目的。

>>>print ("結婚")
結婚

>>>print ("おはよう")
おはよう

>>>str = "結婚"


>>>print (str)
結婚

您的控制台解释器应支持unicode以显示unicode字符。

答案 6 :(得分:1)

仅一件事尚未添加

在Python 2中,如果要打印具有Unicode并使用for $entry at $i in /root/* where $i <= 50 return element { $entry/local-name() } { $entry/name } 的变量,请执行此操作(将要格式化的基本字符串设置为.format()的Unicode字符串:

u''

答案 7 :(得分:0)

这可修复python中的UTF-8打印:

UTF8Writer = codecs.getwriter('utf8')
sys.stdout = UTF8Writer(sys.stdout)

答案 8 :(得分:0)

考虑到这是Google搜索该主题时的第一个堆栈溢出结果,值得一提的是在Python 3中将Unicode字符串前缀u是可选的。(从最上面的答案复制了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'