Address
304 North Cardinal St.
Dorchester Center, MA 02124

Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM

Pythonの文字列操作

Pythonで、ある文字を基準に文字列を前後に分割し、各部分の文字列を取得する方法の解説

Pythonの文字列を、ある文字を基準にして分割する方法

今回はPythonで、文字列の中のある文字を基準にして、その前の部分の文字列とその後ろの部分の文字列とに分割し、それらの文字列を取得する方法の解説記事です。

やりたいこと

まず、次のような文字列があったとします。

吾輩は猫である

この文字列を、「猫」という文字を基準にして、

  • 吾輩は
  • である

という2つの文字列に分割し、それぞれの文字列を取得したい。

これが今回のやりたいことです。

方法:文字列メソッドrpartition()を使う

文字列メソッドrpartition()

実はPythonの文字列メソッドには、まさにこれをするためのメソッドが用意されています。それが、rpartition()です

Python公式サイトには次のように書かれています。

str.rpartition(sep)

文字列を sep の最後の出現位置で区切り、 3 要素のタプルを返します。タプルの内容は、区切りの前の部分、区切り文字列そのもの、そして区切りの後ろの部分です。もし区切れなければ、タプルには二つの空文字列とその後ろに元の文字列そのものが入ります。

最大のポイントは、返ってくる結果は次のようなタプルだということです。

#返されるタプル
(前部分, 区切り文字, 後部分)

それではさっそく、使ってみましょう。

rpartition()の使い方

txt: str = "吾輩は猫である"
output: tuple = txt.rpartition("猫")
print(output)
type(output)

結果は、

('吾輩は', '猫', 'である')

これはタプルですので、インデックスを使って各要素にアクセスできます。

区切り文字が「猫」、それより前の部分がインデックスゼロ番に、区切り文字より後の部分がインデックス2番に格納されています。

実際にインデックスを指定してその要素を取得してみましょう。

output[0]

こうすると、結果は、

'吾輩は'

という文字列が取得できました。

おなじく、

output[2]

とすると、

'である'

という文字列が取得できます。

区切りの文字を、2文字以上の文字列にしても使えます。たとえば、次のように、

output2: tuple = txt.rpatition("は猫で")

とすると、

('吾輩', 'は猫で', 'ある')

というタプルが返ってきます。

愛を分かち合いましょう