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