我想创建一个字典,其中英语单词指向俄语和法语翻译。
如何在Python中打印出unicode字符?另外,如何在变量中存储unicode字符?
答案 0 :(得分:86)
要在Python源代码中包含Unicode字符,您可以在字符串中使用\u0123
形式的Unicode escape characters,并在字符串文字前加上“u”。
以下是在Python交互式控制台中运行的示例:
>>> print u'\u0420\u043e\u0441\u0441\u0438\u044f'
Россия
像这样声明的字符串是Unicode类型变量,如Python Unicode documentation中所述。
如果运行上述命令无法正确显示文本,则可能是您的终端无法显示Unicode字符。
有关从文件中读取Unicode数据的信息,请参阅以下答案:
答案 1 :(得分:43)
直接从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'