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
は最後から最後を意味します。これをどのように行うことができますか?
代わりに .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番目の引数として最大値を指定すると、右端のオカレンスのみを分割できます。
Rsplitを使用できます
string.rsplit('delimeter',1)[1]
文字列を逆から取得します。
私は楽しみのためにこれをやった
>>> s = 'a,b,c,d'
>>> [item[::-1] for item in s[::-1].split(',', 1)][::-1]
['a,b,c', 'd']