10

次のコードがあります。

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

私の出力は次のとおりです。

۰۱۲۳۴۵۶۷۸۹

しかし、私が使用するとき:

print strlist[1]

私は次のようになりますtraceback

IndexError: list index out of range

私の質問 は、どうすれば私splitのことができstringますか? もちろん、私stringが a から my を取得したことを思い出しfunctionvariableください。

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()デフォルトで空白で分割されます。したがって、は の文字列全体と 1 つの要素strlistを含むリストです。strlist[0]

Unicode コードポイントごとに 1 つの要素を持つリストが必要な場合は、さまざまな方法でそれをリストに変換できます。

  • 関数:list(stru.decode("utf-8"))
  • リスト内訳:[item for item in stru.decode("utf-8")]
  • まったく変換しません。リストは本当に必要ですか?他のシーケンスタイプと同じように、Unicode 文字列を反復処理できます ( for character in stru.decode("utf-8"):...)
于 2013-09-10T05:45:01.130 に答える
6

あなたはこれを行うことができます

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