web-dev-qa-db-ja.com

Python文字列の最後の区切り文字で分割しますか?

last文字列内の区切り文字の出現で文字列を分割するための推奨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は最後から最後を意味します。これをどのように行うことができますか?

148
user248237

代わりに .rsplit() または .rpartition() を使用してください:

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

str.rsplit()を使用すると、分割する回数を指定できます。一方、str.rpartition()は一度だけ分割しますが、常に固定数の要素(プレフィックス、デリミター、ポストフィックス)を返し、単一の分割の場合は高速です。

デモ:

>>> 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')

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

249
Martijn Pieters

Rsplitを使用できます

string.rsplit('delimeter',1)[1]

文字列を逆から取得します。

8
Vivek Ananthan

私は楽しみのためにこれをやった

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