Categories: Python

【Python】文字列のプレフィックス(接頭辞)とサフィックス(接尾辞)を削除する方法

この記事では、Pythonで文字列のprefix(プレフィックス: 接頭辞)、またはsuffix(サフィックス: 接尾辞)を削除する方法を解説します。

Python 3.9でstr型に追加されたremoveprefix()メソッドやremovesuffix()メソッドを使うことで接頭辞や接尾辞を削除した文字列のコピーを取得することができます。

str型には同じような機能を持つrstripメソッドやlstripメソッドがありますが、これらの関数は大抵記号を削除するのに使われます。

それでは、使い方を見ていきましょう!

プレフィックス(接頭辞)を削除する

任意の文字列のプレフィックス(接頭辞)を削除するには、str.removeprefix()メソッドを使います。このメソッドはPython 3.9で追加されました。

str.removeprefix(prefix, /)
引数の「/」は、これより前に記述されている引数を位置専用引数にします

文字列がprefix引数で始まる場合、string[len(prefix):]を返す。

s = 'Helloworld'

rps = s.removeprefix('Hello')
print(f'元: {s}, 削除後: {rps}')

実行結果

元: Helloworld, 削除後: world

文字列がprefix引数で始まらない場合、文字列のコピーがそのまま返される。

s = 'Helloworld'

rps = s.removeprefix('abc')
print(f'元: {s}, 削除後: {rps}')

実行結果

元: Helloworld, 削除後: Helloworld

prefixは位置専用引数なのでキーワード引数として指定するとTypeErrorとなる。

s = 'Helloworld'

rps = s.removeprefix(prefix='Hello')

実行結果

Traceback (most recent call last):
  File "/Users/user/Desktop/Python/test.py", line 3, in 
    rps = s.removeprefix(prefix='Hello')
TypeError: str.removeprefix() takes no keyword arguments

サフィックス(接尾辞)を削除する

任意の文字列のサフィックス(接尾辞)を削除するには、str.removesuffix()メソッドを使います。このメソッドはPython 3.9で追加されました。

str.removesuffix(suffix, /)

文字列がsuffix引数で終わる場合、string[:-len(suffix)]を返す。

s = 'Helloworld'

rss = s.removesuffix('world')
print(f'元: {s}, 削除後: {rss}')

実行結果

元: Helloworld, 削除後: Hello

文字列がsuffix引数で終わらない場合、文字列のコピーがそのまま返される。

s = 'Helloworld'

rss = s.removesuffix('abc')
print(f'元: {s}, 削除後: {rss}')

実行結果

元: Helloworld, 削除後: Helloworld

どちらも削除したい場合

接頭辞および接尾辞を削除したい場合はstr.stripメソッドを使います。

s = '[Helloworld]'

rs = s.strip('[]')
print(f'元: {s}, 削除後: {rs}')

実行結果

元: [Helloworld], 削除後: Helloworld

文字列の空白を削除する方法

使い分け

1種類の記号や文字列を削除したい場合はremoveprefixメソッドやremovesuffixメソッドを使い、複数の記号や文字を削除したい場合はrstripメソッドやlstripメソッドを使います。

removeprefixメソッドやremovesuffixメソッドは、指定した文字列が完全に一致した場合に削除するのに対してrstripメソッドやlstripメソッドは文字単位で削除していきます。

例えば、以下のような厄介な記号で始まる文字列があったとして、

s = '[(

removeprefixメソッドでは完全に一致する文字列を指定しなければ削除できないのに対し、

s = '[(

実行結果

元: [(

rstripメソッドでは使われる記号を指定すれば勝手に削除してくれる。

s = '[(

実行結果

元: [(

このように、指定した文字列が完全一致した際に削除したいのか指定した文字列に含まれる文字を削除したいかで使い分けることができます。

ゆうまる

独学でプログラミングを勉強しているおじさん。いろんな言語を勉強したが浅く広くなためあまり仕事につながらない。また忘れっぽいため自分のブログを備忘録としても使っている。産まれてこのかたずっとネコを飼ってる生粋のネコ派。最近お腹が出てきて筋トレに奮闘中!

View Comments

Recent Posts

【Python】任意の秒数だけ処理を一時停止する方法【sleep()関数】

この記事では、Pythonで任意の秒数だ…

6か月 ago

【Python】Wordの文書の新規作成と読み書き

この記事では、Pythonを使ってWor…

6か月 ago

【Python】メタクラスって結局なんなの?

この記事では、Pythonのメタクラスに…

7か月 ago

【Unity】割合から数値に数値から割合に変換する

この記事では、割合から数値に変換する関数…

7か月 ago

【Python】抽象クラスを定義する方法

この記事では、Pythonで抽象クラスを…

7か月 ago