如何在Python中打印Unicode字符?

如何在Python中打印Unicode字符?,python,python-unicode,Python,Python Unicode,我想编一本字典,让英语单词指向俄语和法语的翻译 如何在Python中打印unicode字符?另外,如何在变量中存储unicode字符?在Python2中,使用u声明unicode字符串,如u“猫"和使用decode()和encode()分别转换为unicode和unicode 在Python3中要简单得多。可以找到一个非常好的概述。该演示为我澄清了很多事情。要在Python源代码中包含Unicode字符,可以在字符串中使用\u0123格式。在Python2.x中,还需要在字符串文本前面加上“u”

我想编一本字典,让英语单词指向俄语和法语的翻译


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

在Python2中,使用
u
声明unicode字符串,如
u“猫"
和使用
decode()
encode()
分别转换为unicode和unicode


在Python3中要简单得多。可以找到一个非常好的概述。该演示为我澄清了很多事情。

要在Python源代码中包含Unicode字符,可以在字符串中使用
\u0123
格式。在Python2.x中,还需要在字符串文本前面加上“u”

下面是一个在Python 2.x交互控制台中运行的示例:

>>> print u'\u0420\u043e\u0441\u0441\u0438\u044f'
Россия
在Python2中,在字符串前面加上“u”将它们声明为Unicode类型变量,如中所述

在Python 3中,“u”前缀现在是可选的:

>>> print('\u0420\u043e\u0441\u0441\u0438\u044f')
Россия
如果运行上述命令无法正确显示文本,则可能是您的终端无法显示Unicode字符

这些示例使用Unicode转义(
\u..
),这允许您打印Unicode字符,同时将源代码保持为普通ASCII。这有助于在不同系统上使用相同的源代码。您也可以在Python源代码中直接使用Unicode字符(例如,如果您确信您的所有系统都能正确处理Unicode文件,请在Python 2中使用
print u'ª¥ССб'

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

用Python打印unicode字符: 直接从python解释器打印unicode字符:

el@apollo:~$ python
Python 2.7.3
>>> print u'\u2713'
✓
Unicode字符
u'\u2713'
是一个复选标记。解释器在屏幕上打印该复选标记

从python脚本打印unicode字符:

el@apollo:~$ python
Python 2.7.3
>>> print u'\u2713'
✓
将其放入test.py:

#!/usr/bin/python
print("here is your checkmark: " + u'\u2713');
按如下方式运行:

el@apollo:~$ python test.py
here is your checkmark: ✓
如果它没有为您显示复选标记,那么问题可能在其他地方,比如终端设置或您正在进行的流重定向操作

在文件中存储unicode字符:

el@apollo:~$ python
Python 2.7.3
>>> print u'\u2713'
✓
将此保存到文件: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保存到一个文件中。

我在Windows中使用可移植的winpython,它包括IPython QT控制台,我可以实现以下功能

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

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

>>>str = "結婚"


>>>print (str)
結婚

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

如果您尝试
print()
unicode,并且出现ascii编解码器错误,请在启动python之前签出,其TLDR为do
export PYTHONIOENCODING=UTF-8
(此变量控制控制台尝试将字符串数据编码为的字节序列)。在内部,Python3默认使用UTF-8(请参阅)所以这不是问题所在;您可以将Unicode放入字符串中,如其他答案和注释所示。当您尝试将这些数据输出到控制台时,问题就出现了。Python认为控制台只能处理ascii。其他一些答案说,“先将其写入文件”,但请注意,它们指定了编码(UTF-8)为了做到这一点(因此,Python在编写时不会更改任何内容),然后使用一种读取文件的方法,该方法只会吐出字节,而不考虑编码,这就是为什么它可以工作的原因。

还有一件事还没有添加

在Python 2中,如果要打印具有unicode的变量并使用
.format()
,请执行此操作(将正在格式化的基字符串设置为具有
u''的unicode字符串


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

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

考虑到这是google搜索此主题时第一次出现堆栈溢出结果,值得一提的是,在Python3中,unicode字符串的前缀
u
是可选的(Python2示例是从顶部答案复制的)

Python3(两者都适用):

Python 2:

print u'\u0420\u043e\u0441\u0441\u0438\u044f'

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

打印(“学习:”,“\U0001F40D”)
学习:这有帮助吗?看一下。用<代码> u>代码预处理字符串允许Python把它们看作Unicode字符串文字。是的,你可以用Unicode编码的文本文件编写代码,但是很多编辑器和工具在处理它们时遇到了麻烦。我同意,最好保持源代码为ASCII格式,并使用Unicode转义码。@MattRyall,我同意,但一个俄罗斯开发团队可能希望用俄语编写注释和docstring。对于语言项目来说,这是一个不错的选择。不过请注意,这仅在打印字符串时有效。如果它被包装在其他对象中,您将看到转义码。例如,尝试“打印[u'\u0420\u043e\u0441\u0441\u0438\u044f']”。如果我将其存储到字符串
mystr
?那么如何打印它呢?@CarloWood The会准确地告诉您想要什么。只需
打印您的\u unicode\u字符。encode('utf-8'))
@ofer.sheffer奇怪的是,我来这里是想解决相反的问题,重点是视频链接可能需要一些fiddling.Thx。它非常有用。这也可以作为非视频在这里使用:实用的Unicode,或者,我如何停止痛苦?(Pycon2012)谢谢!我在使用asciitree包将结果写入文件时遇到了unicode问题。这为我解决了这个问题。非常感谢。花了几个小时在Google上搜索,很高兴我找到了这个。谢谢!这正是我搜索的:一种在字符串中打印unicode字符的通用方法,适用于python2和python3。钳制版本应该在Phyto中工作n 2以及-夹具是选项a