2013-02-21 21 views
89

の文字列を最後にの文字列に区切るには、どのようなPythonのイディオムが推奨されますか?例: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を分割するデリミタの発生である第二の引数を取ります。通常のリストインデックス作成の場合と同様に、-1は最後から最後までを意味します。これはどうすればできますか?

答えて

161

使用.rsplit()またはその代わり.rpartition()str.rpartition()は一度だけ分割が、常に固定数の要素を返します(接頭辞を、& postfixの区切り)と高速である一方、

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

str.rsplit()は、あなたが分割する回数を指定することができます単一の分割ケースの場合。

デモ:

>>> 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()を与えることで、右端の出現を分割することになります。

2

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

>>> s = 'a,b,c,d' 
    >>> [item[::-1] for item in s[::-1].split(',', 1)][::-1] 
    ['a,b,c', 'd'] 
関連する問題