Noo*_*one 105 python python-unicode
我想写一本字典,英文单词指向俄语和法语翻译.
如何在Python中打印出unicode字符?另外,如何在变量中存储unicode字符?
Mat*_*all 95
要在Python源代码中包含Unicode字符,可以在字符串中使用表单中的Unicode转义字符\u0123
,并在字符串文字前面加上"u".
这是在Python交互式控制台中运行的示例:
>>> print u'\u0420\u043e\u0441\u0441\u0438\u044f'
??????
Run Code Online (Sandbox Code Playgroud)
像这样声明的字符串是Unicode类型的变量,如Python Unicode文档中所述.
如果运行上述命令不能正确显示文本,则可能是您的终端无法显示Unicode字符.
有关从文件中读取Unicode数据的信息,请参阅以下答案:
Eri*_*ski 44
直接从python解释器打印一个unicode字符:
el@apollo:~$ python
Python 2.7.3
>>> print u'\u2713'
?
Run Code Online (Sandbox Code Playgroud)
Unicode字符u'\u2713'
是一个复选标记.解释器在屏幕上打印复选标记.
从python脚本中打印unicode字符:
把它放在test.py中:
#!/usr/bin/python
print("here is your checkmark: " + u'\u2713');
Run Code Online (Sandbox Code Playgroud)
像这样运行:
el@apollo:~$ python test.py
here is your checkmark: ?
Run Code Online (Sandbox Code Playgroud)
如果它没有为您显示复选标记,则问题可能出在其他地方,例如终端设置或您正在使用流重定向执行的操作.
将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: é')
Run Code Online (Sandbox Code Playgroud)
运行它并将输出管道输出到文件:
python foo.py > tmp.txt
Run Code Online (Sandbox Code Playgroud)
打开tmp.txt并查看内部,你会看到:
el@apollo:~$ cat tmp.txt
e with obfuscation: é
Run Code Online (Sandbox Code Playgroud)
因此,您已将带有模糊标记的unicode e保存到文件中.
Tom*_*ndt 34
如果您正在尝试使用print()
Unicode,并获得ascii编解码器错误,请查看此页面,其中TLDR export PYTHONIOENCODING=UTF-8
在启动python之前执行(此变量控制控制台尝试将字符串数据编码为的字节序列).在内部,Python3默认使用UTF-8(参见Unicode HOWTO),这不是问题所在; 您可以将Unicode放在字符串中,如其他答案和注释中所示.当您尝试将此数据发送到控制台时发生问题.Python认为你的控制台只能处理ascii.其他一些答案说,"首先将它写入文件",但请注意它们指定了编码(UTF-8)(因此,Python不会改变任何内容),然后使用方法进行读取只是吐出字节而不考虑编码的文件,这就是为什么这样做的原因.
考虑到这是 google 搜索此主题时的第一个堆栈溢出结果,值得一提的u
是,在 Python 3 中,unicode 字符串的前缀是可选的。(Python 2 示例是从顶部答案中复制的)
Python 3(都工作):
print('\u0420\u043e\u0441\u0441\u0438\u044f')
print(u'\u0420\u043e\u0441\u0441\u0438\u044f')
Run Code Online (Sandbox Code Playgroud)
蟒蛇2:
print u'\u0420\u043e\u0441\u0441\u0438\u044f'
Run Code Online (Sandbox Code Playgroud)
小智 8
Python 支持\N
命名 unicode 字符,如果您想让代码更具可读性,这会很方便。这是一个例子:
assert '\N{snake}' == ''
Run Code Online (Sandbox Code Playgroud)
还有一件事尚未添加
\n\n在 Python 2 中,如果您想打印具有 unicode 的变量并使用.format()
,请执行以下操作(使正在格式化的基本字符串为 unicode 字符串:u\'\'
:
>>> text = "Universit\xc3\xa9 de Montr\xc3\xa9al"\n>>> print(u"This is unicode: {}".format(text))\n>>> This is unicode: Universit\xc3\xa9 de Montr\xc3\xa9al\n
Run Code Online (Sandbox Code Playgroud)\n
将'+'替换为'000'。例如,'U+1F600'将变成'U0001F600'并在 Unicode 代码前加上“\”并打印。例子:
>>> print("Learning : ", "\U0001F40D")
Learning :
>>>
Run Code Online (Sandbox Code Playgroud)
检查这个也许它会帮助 python unicode emoji