首页 > 解决方案 > 特殊字符仅作为字符串的一部分打印,但不独立打印(python3)

问题描述

我使用包含变音符号的字符串。当我打印字符串时,它被正确打印:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
s = "ˈtau̯rum"
print(s)
> ˈtau̯rum

但是,当我遍历字符串并独立打印每个字符时,某些字符不会打印:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
s = "ˈtau̯rum"
for c in s:

    print (c)

>
ˈ
t
a
u

r
u
m

标签: python-3.xutf-8utf

解决方案


正如评论所建议的,打印问题很可能是由于您的终端如何处理显示 unicode 字符。utf-8您可以通过将字符编码为字节或使用ord()内置字符来检查字符是否符合您的预期。

给定一个表示一个 Unicode 字符的字符串,返回一个表示该字符的 Unicode 代码点的整数。例如,ord('a') 返回整数 97,而 ord('€')(欧元符号)返回 8364。这是chr()的倒数。

例如

Python 3.7.1 (default, Oct 23 2018, 19:19:42)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.1.1 -- An enhanced Interactive Python. Type '?' for help.

IIn [1]: s = "ˈtau̯rum"                                                                                                 

In [2]: print(s)
ˈtau̯rum

In [3]: for c in s:
   ...:     print(c, c.encode('utf-8'), ord(c))
   ...:
ˈ b'\xcb\x88' 712
t b't' 116
a b'a' 97
u b'u' 117
̯  b'\xcc\xaf' 815
r b'r' 114
u b'u' 117
m b'm' 109

推荐阅读