web-dev-qa-db-ja.com

Unicode文字列をリストに分割する方法

私は次のコードを持っています:

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

私の出力は:

۰۱۲۳۴۵۶۷۸۹

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

print strlist[1]

次のtracebackを取得します。

IndexError: list index out of range

私の質問は、どうすればsplit my string?もちろん、stringfunctionから取得したことを覚えておいてください。これは、variableだと思いますか?

10
PersianGulf

split()メソッドは、デフォルトで空白で分割されます。したがって、strlistは、_strlist[0]_の文字列全体と、1つの要素を含むリストです。

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

  • 関数:list(stru.decode("utf-8"))
  • リストの補正:[item for item in stru.decode("utf-8")]
  • まったく変換しません。本当にリストが必要ですか?他のシーケンスタイプと同じように、Unicode文字列を反復処理できます(for character in stru.decode("utf-8"): ...)
11
chryss
  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']
    

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

list(stru.decode("utf-8"))
6
Roman Pekar