【发布时间】:2017-08-23 09:18:43
【问题描述】:
我有一个包含英语和非英语字符的 UTF-8 编码字符串。我正在尝试将此字符串转换为单个字符的列表。当我只使用 list() 时,一些非英文字母在中间被剪掉了。例如:
In [200]: s = "abאב"
In [201]: print s
abאב
In [202]: l = list(s)
In [203]: print l
['a', 'b', '\xd7', '\x90', '\xd7', '\x91']
In [204]: print l[2]
�
In [205]: print l[2]+l[3]
א
l[2] 打印乱码,因为字母 א 的编码是 \xd7\x90 而不是 \xd7。如何充分拆分字符串?
谢谢。
【问题讨论】:
-
这可能有点迂腐,但是……什么是“英文”字符?天真地假设“英语”只包含 ASCII 字符是有风险的。
-
特别是这个问题与希伯来字母有关。