10

我有以下代码:

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

我的输出是:

۰۱۲۳۴۵۶۷۸۹

但是当我使用:

print strlist[1]

我得到以下信息traceback

IndexError: list index out of range

我的问题 是,我该怎么splitstring?当然,记得我string从 a得到我的function,认为它是 a variable?

4

3 回答 3

14
  1. 你不需要。

    >>> print u"۰۱۲۳۴۵۶۷۸۹"[1]
    ۱
    
  2. 如果你还想...

    >>> list(u"۰۱۲۳۴۵۶۷۸۹")
    [u'\u06f0', u'\u06f1', u'\u06f2', u'\u06f3', u'\u06f4', u'\u06f5', u'\u06f6', u'\u06f7', u'\u06f8', u'\u06f9']
    
于 2013-09-10T05:42:11.683 回答
11

默认情况下,该split()方法在空格上拆分。因此,strlist是一个列表,其中包含 中的整个字符串strlist[0]和一个元素。

如果您想要一个包含每个 unicode 代码点的元素的列表,您可以通过不同的方式将其转换为列表:

  • 功能:list(stru.decode("utf-8"))
  • 列表压缩:[item for item in stru.decode("utf-8")]
  • 根本不转换。你真的需要一份清单吗?您可以像遍历任何其他序列类型(for character in stru.decode("utf-8"):...)一样遍历 unicode 字符串
于 2013-09-10T05:45:01.130 回答
6

你可以这样做

list(stru.decode("utf-8"))
于 2013-09-10T05:42:53.610 回答