我想制作一本字典,其中英语单词指向俄语和法语的翻译。
如何在 Python 中打印出 unicode 字符?另外,如何将 unicode 字符存储在变量中?
我想制作一本字典,其中英语单词指向俄语和法语的翻译。
如何在 Python 中打印出 unicode 字符?另外,如何将 unicode 字符存储在变量中?
要在 Python 源代码中包含 Unicode 字符,您可以在字符串的表单中使用Unicode 转义字符\u0123。在 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...),它允许您打印 Unicode 字符,同时将源代码保持为纯 ASCII。这有助于在不同系统上使用相同的源代码。print u'Россия'如果您确信您的所有系统都能正确处理 Unicode 文件,您也可以直接在 Python 源代码中使用 Unicode 字符(例如在 Python 2 中)。
有关从文件中读取 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 保存到文件中。
如果您尝试使用print()Unicode,并遇到 ascii 编解码器错误,请查看此页面,其 TLDR 是export PYTHONIOENCODING=UTF-8在启动 python 之前完成的(此变量控制控制台尝试将您的字符串数据编码为的字节序列)。在内部,Python3 默认使用 UTF-8(参见Unicode HOWTO) 所以这不是问题;您可以将 Unicode 放入字符串中,如其他答案和评论中所示。当您尝试将这些数据发送到您的控制台时,问题就会发生。Python 认为你的控制台只能处理 ascii。其他一些答案说,“首先将其写入文件”,但请注意,他们为此指定了编码(UTF-8)(因此,Python 不会更改任何写入内容),然后使用读取方法只吐出字节而不考虑编码的文件,这就是它起作用的原因。
在 Python 2 中,您使用 , 声明 unicode 字符串u,如 inu"猫"和使用decode()andencode()分别转换为 unicode 和从 unicode 转换。
这在 Python 3 中要容易得多。可以在这里找到一个很好的概述。那个演讲为我澄清了很多事情。
考虑到这是 google 搜索该主题时的第一个堆栈溢出结果,值得一提的u是,在 Python 3 中为 unicode 字符串添加前缀是可选的。(Python 2 示例复制自顶级答案)
Python 3(两者都有效):
print('\u0420\u043e\u0441\u0441\u0438\u044f')
print(u'\u0420\u043e\u0441\u0441\u0438\u044f')
蟒蛇2:
print u'\u0420\u043e\u0441\u0441\u0438\u044f'
将'+'替换为'000'。例如,'U+1F600'将变为'U0001F600'并在 Unicode 代码前加上“\”并打印。例子:
>>> print("Learning : ", "\U0001F40D")
Learning :
>>>
检查这个也许它会帮助 python unicode emoji
我在 Windows 中使用 Portable winpython,它包括 IPython QT 控制台,我可以实现以下。
>>>print ("結婚")
結婚
>>>print ("おはよう")
おはよう
>>>str = "結婚"
>>>print (str)
結婚
您的控制台解释器应支持 unicode 以显示 unicode 字符。
还有一件事尚未添加
在 Python 2 中,如果要打印具有 unicode 和 use 的变量,.format()请执行此操作(将要格式化的基本字符串设置为 unicode 字符串u'':
>>> text = "Université de Montréal"
>>> print(u"This is unicode: {}".format(text))
>>> This is unicode: Université de Montréal
这修复了 python 中的 UTF-8 打印:
UTF8Writer = codecs.getwriter('utf8')
sys.stdout = UTF8Writer(sys.stdout)