【问题标题】:Python - converting a non-English UTF-8-encoded string into a list of charactersPython - 将非英语 UTF-8 编码的字符串转换为字符列表
【发布时间】: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 字符是有风险的。
  • 特别是这个问题与希伯来字母有关。

标签: python encoding utf-8


【解决方案1】:

我假设你使用的是 python2:

>>> list(s.decode('utf8'))       
[u'a', u'b', u'\u05d0', u'\u05d1']

【讨论】:

    【解决方案2】:

    我假设你运行 Python 2.7

    如果您经常使用 UTF-8,您应该考虑运行 Python 3。 在 Python 3 中,它可以正常工作。

    print(l)
    ['a', 'b', 'א', 'ב']
    print(l[2])
    א
    

    【讨论】:

      猜你喜欢
      • 2018-09-14
      • 1970-01-01
      • 1970-01-01
      • 2016-05-16
      • 1970-01-01
      • 2011-12-08
      • 2011-05-20
      • 1970-01-01
      相关资源
      最近更新 更多