320

文字列内の区切り文字の最後の出現で文字列を分割するための推奨される Python イディオムは何ですか? 例:

# instead of regular split
>> s = "a,b,c,d"
>> s.split(",")
>> ['a', 'b', 'c', 'd']

# ..split only on last occurrence of ',' in string:
>>> s.mysplit(s, -1)
>>> ['a,b,c', 'd']

mysplit分割するデリミタのオカレンスである 2 番目の引数を取ります。通常のリストの索引付けと同様に-1、最後から最後を意味します。これはどのように行うことができますか?

4

3 に答える 3

547

.rsplit() または.rpartition()代わりに使用します。

s.rsplit(',', 1)
s.rpartition(',')

str.rsplit()分割する回数を指定できますが、str.rpartition()分割は 1 回だけですが、常に一定数の要素 (接頭辞、区切り文字、および接尾辞) を返し、単一の分割の場合はより高速です。

デモ:

>>> s = "a,b,c,d"
>>> s.rsplit(',', 1)
['a,b,c', 'd']
>>> s.rsplit(',', 2)
['a,b', 'c', 'd']
>>> s.rpartition(',')
('a,b,c', ',', 'd')

どちらの方法も、文字列の右側から分割を開始します。2 番目の引数として最大値をstr.rsplit()指定すると、最も右側のオカレンスだけを分割できます。

于 2013-02-21T21:06:55.483 に答える
6

私はちょうど楽しみのためにこれをやった

    >>> s = 'a,b,c,d'
    >>> [item[::-1] for item in s[::-1].split(',', 1)][::-1]
    ['a,b,c', 'd']

注意: この回答が間違っている可能性がある場合は、以下の最初のコメントを参照してください。

于 2016-11-24T14:31:56.410 に答える