如何在 Python 中打印 Unicode 字符?
- 2025-02-24 09:29:00
- admin 原创
- 60
问题描述:
我想制作一本词典,让英语单词指向俄语和法语的翻译。
如何在 Python 中打印出 unicode 字符?此外,如何将 unicode 字符存储在变量中?
解决方案 1:
要在 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 从文件读取字符
解决方案 2:
在 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保存到了文件中。
解决方案 3:
如果您尝试使用print()
Unicode 并收到 ascii 编解码器错误,请查看此页面,其 TLDR 是export PYTHONIOENCODING=UTF-8
在启动 python 之前执行的操作(此变量控制控制台尝试将字符串数据编码为的字节序列)。在内部,Python3 默认使用 UTF-8(请参阅Unicode HOWTO),所以这不是问题;您可以将 Unicode 放在字符串中,如其他答案和评论所示。当您尝试将这些数据发送到控制台时,问题就会发生。Python 认为您的控制台只能处理 ascii。其他一些答案说“先将其写入文件”,但请注意,他们为此指定了编码(UTF-8)(因此,Python 不会在写入时更改任何内容),然后使用一种读取文件的方法,该方法只吐出字节而不考虑编码,这就是它有效的原因。
解决方案 4:
在 Python 2 中,可以使用 , 声明 unicode 字符串u
,如中u"猫"
使用decode()
和encode()
分别在 unicode 和 unicode 之间进行转换。
在 Python 3 中这要容易得多。可以在这里找到一个非常好的概述。那个演示为我澄清了很多事情。
解决方案 5:
将'+'替换为'000'。例如,'U+1F600'将变为'U0001F600'并在 Unicode 代码前面添加“\”并打印。示例:
>>> print("Learning : ", "U0001F40D")
扫码咨询,免费领取项目管理大礼包!