我想制作一个词典,其中英语单词指向俄语和法语翻译。
在Python中如何打印Unicode字符?另外,如何将Unicode字符存储在变量中?
我想制作一个词典,其中英语单词指向俄语和法语翻译。
在Python中如何打印Unicode字符?另外,如何将Unicode字符存储在变量中?
要在Python源代码中包含Unicode字符,您可以在字符串中使用形式为\u0123
的Unicode转义字符。在Python 2.x中,您还需要在字符串文字前加上'u'。
以下是在Python 2.x交互式控制台中运行的示例:
>>> print u'\u0420\u043e\u0441\u0441\u0438\u044f'
Россия
在Python 2中,字符串前缀'u'表示它们是Unicode类型变量,详见Python Unicode文档。在Python 3中,'u'前缀现在是可选的:>>> print('\u0420\u043e\u0441\u0441\u0438\u044f')
Россия
如果按照上述命令运行并不能正确地显示文本,那么可能是您的终端不支持显示Unicode字符。
这些示例使用Unicode转义符(\u...
),允许您在保持源代码为普通ASCII的同时打印Unicode字符。当在不同的系统上使用相同的源代码时,这可以提供帮助。 如果您确信所有系统都正确处理Unicode文件,则还可以直接在Python源代码中使用Unicode字符(例如,在Python 2中输入print u'Россия'
),。
有关从文件中读取Unicode数据的信息,请参见此答案:
mystr
的字符串中,那么如何打印它? - ZK Zhao直接从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保存到文件中。
print()
打印Unicode,并且出现ascii编解码错误,请查看this page,其中TLDR是在启动Python之前执行export PYTHONIOENCODING=UTF-8
(该变量控制控制台尝试将字符串数据编码为字节序列)。在内部,默认情况下,Python3使用UTF-8(请参见the Unicode HOWTO),因此这不是问题。您可以将Unicode放入字符串中,如其他答案和评论中所示。问题发生在您尝试将此数据输出到控制台时。Python认为您的控制台只能处理ascii。其他答案中有些说,“先写入文件”,但请注意,它们指定了编码(UTF-8)来进行写入(因此,Python在写入时不会更改任何内容),然后使用一种方法来读取文件,该方法仅输出字节而不考虑编码,这就是为什么它有效的原因。LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8
LC_LANG=en_US.UTF-8
- Roger_S在 Python 2 中,你需要使用 u
来声明 Unicode 字符串,例如 u"猫"
,同时使用 decode()
和 encode()
分别进行 Unicode 编码和解码。
在 Python 3 中,这个过程要简单得多。你可以参考这里了解更多相关信息。这个演示对我帮助很大,希望对你也有所帮助。
将'+'替换为'000'。例如,'U+1F600'将变为'U0001F600',并在Unicode代码前面添加"\"并打印。
>>> print("Learning : ", "\U0001F40D")
Learning :
>>>
看看这个,也许会有帮助 Python Unicode表情
考虑到这个主题在谷歌搜索时的第一个堆栈溢出结果,值得一提的是,在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'
Python支持使用\N
来表示命名的Unicode字符,这在提高代码可读性方面很有用。以下是一个示例:
assert '\N{snake}' == ''
还有一件事情尚未添加
在Python 2中,如果要打印具有Unicode的变量并使用.format()
,请执行以下操作(使正在格式化的基本字符串成为Unicode字符串:u''
):
>>> text = "Université de Montréal"
>>> print(u"This is unicode: {}".format(text))
>>> This is unicode: Université de Montréal
我在Windows中使用便携式WinPython,其中包括IPython QT控制台,我可以实现以下功能。
>>>print ("結婚")
結婚
>>>print ("おはよう")
おはよう
>>>str = "結婚"
>>>print (str)
結婚
您的控制台解释器应该支持Unicode以显示Unicode字符。
这解决了Python中的UTF-8打印问题:
UTF8Writer = codecs.getwriter('utf8')
sys.stdout = UTF8Writer(sys.stdout)
u
,允许Python将其视为Unicode字符串字面值。 - S.R.I