python-3.x - 特殊字符仅作为字符串的一部分打印,但不独立打印(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
解决方案
正如评论所建议的,打印问题很可能是由于您的终端如何处理显示 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
推荐阅读
- firebase - 可调用函数支持缓存吗?
- environment-variables - 将 json 重命名为 *.environment.json 并且无法在邮递员中导入相同的内容
- java - 使用带有当前日期和 dob 和枚举的休眠保存学生
- centos - eth1接口在ifconfig中不可见,在centos6中无法与其他服务器交互
- java - 尝试在网站完全打开之前输入登录凭据时出现“无警报打开”
- java - 方法.matches String false,如何匹配true
- python - tensorflow sess.run() 真的可以释放python的GIL(全局解释器外观)吗?
- node.js - 如何在 Mongoose 上使用 .substr() 方法
- laravel-5 - Laravel Carbon 日期格式在引导弹出窗口中很奇怪
- java - 在使用实现而不是编译时无法访问库模块依赖项