1. ホーム
  2. パイソン

[解決済み】Pythonの文字列の最後のデリミタで分割する?

2022-03-27 21:04:41

質問

で文字列を分割するための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 は最後から2番目という意味です。これはどうすればいいのでしょうか?

どのように解決するのですか?

使用方法 .rsplit() または .rpartition() の代わりに

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

str.rsplit() は分割する回数を指定することができます。 str.rpartition() は一度だけ分割されますが、常に固定数の要素 (prefix, delimiter & postfix) を返し、一度の分割の場合はより高速になります。

デモ

>>> 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引数にとれば、右端の出現箇所だけを分割することができます。