如何将Unicode字符串拆分为列表

10

我有以下代码:

stru = "۰۱۲۳۴۵۶۷۸۹"
strlist = stru.decode("utf-8").split()
print strlist[0]

我的输出是:

۰۱۲۳۴۵۶۷۸۹

但是当我使用:

print strlist[1]

我得到了以下的traceback

IndexError: list index out of range

我的问题是,我如何分割我的字符串?当然,记得我从一个函数中获取我的字符串,将其视为一个变量


列表推导式?strlist = [s for s in stru.decode('utf-8')] - Shashank
我认为Unicode字符串是一个独特的问题。 - js2010
3个回答

14
  1. 你不需要这样做。

>>> print u"۰۱۲۳۴۵۶۷۸۹"[1]
۱
  • 如果你仍然想要...

  • >>> list(u"۰۱۲۳۴۵۶۷۸۹")
    [u'\u06f0', u'\u06f1', u'\u06f2', u'\u06f3', u'\u06f4', u'\u06f5', u'\u06f6', u'\u06f7', u'\u06f8', u'\u06f9']
    

    +1 不需要列出清单,你是正确的。 - Roman Pekar

    11

    split()方法默认按空格拆分字符串。因此,strlist是一个包含整个字符串的列表,而且只有一个元素 strlist[0]

    如果您想获得每个 Unicode 代码点的单独元素列表,可以通过不同的方式将其转换为列表:

    • 函数:list(stru.decode("utf-8"))
    • 列表推导式:[item for item in stru.decode("utf-8")]
    • 不进行任何转换。您真的需要一个列表吗?您可以像处理其他序列类型一样遍历 Unicode 字符串 (for character in stru.decode("utf-8"): ...)

    6
    你可以这样做。
    list(stru.decode("utf-8"))
    

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接