Pythonで文字列の前後から空白や任意文字を削除する方法を解説します。
Contents
文字列の前後から空白等の文字を削除する方法
~ strip, lstrip, rstrip ~
Pythonで文字列の前後から空白等の文字列を削除する場合には、strip, lstrip, rstripメソッドを使います。stripメソッドは文字列の前後両方を、lstripメソッドは前方のみを、rstripメソッドは後方のみを削除の対象とします。
Webページの検索フォームなどで、検索文字の前後に空白等を入れてしまうことがありますが、このような場合に正確な検索をすることができなくなってしまいます。また、データベースへ登録するような情報の場合にも余分な空白等が入っていると、その後の処理に悪影響を及ぼす可能性があります。
このような場合にstrip, lstrip, rstripメソッドを使って処理前に不必要な空白等を削除します。以降で各メソッドの使い方について例を用いてご紹介します。
文字列の前後から文字を削除する ~ strip ~
文字列の前後から文字を削除するにはstripメソッドを使用します。
空白等の文字を削除する
文字列の前後から空白等の文字を削除するにはstripを以下のように使用します。
sample_text = ' Pythonプロジェクト \t\n' print(f'"{sample_text.strip()}"')
【実行結果】 "Pythonプロジェクト"
空白等と言っているのは「半角空白」「全角空白」「水平タブ(\t)」「垂直タブ(\v)」「改行文字(\r、\n)」「改ページ(\f)」も含んでいる点に注意しましょう。
任意の文字を削除する
文字列の前後から任意の文字を削除するにはstripを以下のように使用します。
sample_text = '(---===![Pythonプロジェクト]!===---)' print(f'"{sample_text.strip("(-=![])")}"')
【実行結果】 "Pythonプロジェクト"
引数には削除したい文字を列挙した文字列を指定します。上記の例では「(」「-」「=」「!」「[」「]」「)」を列挙して'(-=![])'という文字列を引数にしています。
'(-=![])'という連続した文字列を削除するという意味ではないということに注意しましょう。
stripの公式ドキュメントの記載はこちらを参照してください。
文字列の前から文字を削除する ~ lstrip ~
文字列の前から文字を削除するにはlstripメソッドを使用します。
空白等の文字を削除する
文字列の前から空白等の文字を削除するにはlstripを以下のように使用します。
sample_text = ' Pythonプロジェクト \t\n' print(f'"{sample_text.lstrip()}"')
【実行結果】 "Pythonプロジェクト "
空白等と言っているのは「半角空白」「全角空白」「水平タブ(\t)」「垂直タブ(\v)」「改行文字(\r、\n)」「改ページ(\f)」も含んでいる点に注意しましょう。
任意の文字を削除する
文字列の前から任意の文字を削除するにはlstripを以下のように使用します。
sample_text = '(---===![Pythonプロジェクト]!===---)' print(f'"{sample_text.lstrip("(-=![])")}"')
【実行結果】 "Pythonプロジェクト]!===---)"
引数には削除したい文字を列挙した文字列を指定します。上記の例では「(」「-」「=」「!」「[」「]」「)」を列挙して'(-=![])'という文字列を引数にしています。
'(-=![])'という連続した文字列を削除するという意味ではないということに注意しましょう。
lstripの公式ドキュメントの記載はこちらを参照してください。
文字列の後から文字を削除する ~ rstrip ~
文字列の後から文字を削除するにはrstripメソッドを使用します。
空白等の文字を削除する
文字列の後から空白等の文字を削除するにはrstripを以下のように使用します。
sample_text = ' Pythonプロジェクト \t\n' print(f'"{sample_text.rstrip()}"')
【実行結果】 " Pythonプロジェクト"
空白等と言っているのは「半角空白」「全角空白」「水平タブ(\t)」「垂直タブ(\v)」「改行文字(\r、\n)」「改ページ(\f)」も含んでいる点に注意しましょう。
任意の文字を削除する
文字列の後から任意の文字を削除するにはrstripを以下のように使用します。
sample_text = '(---===![Pythonプロジェクト]!===---)' print(f'"{sample_text.rstrip("(-=![])")}"')
【実行結果】 "(---===![Pythonプロジェクト"
引数には削除したい文字を列挙した文字列を指定します。上記の例では「(」「-」「=」「!」「[」「]」「)」を列挙して'(-=![])'という文字列を引数にしています。
'(-=![])'という連続した文字列を削除するという意味ではないということに注意しましょう。
rstripの公式ドキュメントの記載はこちらを参照してください。
文字列から接頭辞(prefix)/接尾辞(suffix)を削除する方法
~ removeprefix, removesuffix ~
文字列の頭につく文字の文字列を接頭辞(prefix: プレフィックス)と言います。例えば、unavailableという文字であれば、「un」+「available」というように接頭辞として「un」がついています。
同じように文字列の末尾につく文字列を接尾辞(suffix: サフィックス)と言います。例えば、workerという文字であれば、「work」+「er」というように接尾辞として「er」がついています。
このように決まった接頭辞、接尾辞がついている文字列というのはよくあります。このような接頭辞、接尾辞を文字列から削除したい場合には、removeprefix, removesuffixメソッドを使用することができます。
removeprefix/remofesuffixは、Python3.9から使えるメソッドですので注意しましょう。
文字列から接頭辞(prefix)を削除する ~ removeprefix ~
文字列の接頭辞(prefix)を削除するにはremoveprefixを以下のように使用します。
sample_text_pre = 'Testプロジェクト' sample_text_suf = 'プロジェクトTest' # removeprefixで接頭辞(prefix)を削除する print('--- removeprefix') print(sample_text_pre.removeprefix('Test')) print(sample_text_suf.removeprefix('Test'))
【実行結果】 --- removeprefix プロジェクト プロジェクトTest
上記の例のように、removeprefixで指定した任意の接頭辞(この例では'Test')が削除できていることが分かります。もし、指定した接頭辞が含まれない場合は、元の文字列が返却されます。
removeprefixメソッドの公式ドキュメントの記載はこちらを参照してください。
文字列から接尾辞(suffix)を削除する ~ removesuffix ~
文字列の接尾辞(suffix)を削除するにはremovesuffixを以下のように使用します。
sample_text_pre = 'Testプロジェクト' sample_text_suf = 'プロジェクトTest' # removesuffixで接尾辞(suffix)を削除する print('--- removesuffix') print(sample_text_pre.removesuffix('Test')) print(sample_text_suf.removesuffix('Test'))
【実行結果】 --- removesuffix Testプロジェクト プロジェクト
上記の例のように、removesuffixで指定した任意の接尾辞(この例では'Test')が削除できていることが分かります。もし、指定した接尾辞が含まれない場合は、元の文字列が返却されます。
removesuffixメソッドの公式ドキュメントの記載はこちらを参照してください。
上記で紹介しているソースコードについてはgithubにて公開しています。参考にしていただければと思います。