本記事ではPythonで空白(スペース)を削除する方法を紹介します。
「メールアドレス」「電話番号」など、空白不要のデータ入力を受け付けた場合、中には間違えて空白を入力してしまう方もいます。そのような場合はプログラム側で空白を削除するよう設計し、正しいデータをデータベースに管理できます。
主にデータの管理で利用される事が多いので、データの扱いと相性の良いPythonを利用している方は空白削除のやり方を把握しておきましょう。
文字列からすべての空白を削除:replace
指定した文字列の中にある空白を全て削除したい場合は、replaceメソッドを利用しましょう。replaceメソッドは指定した文字列の中にある特定の文字を、全て変換することができます。
replaceメソッドでは一つ目の引数で置換対象を、二つ目の引数で置換後の文字を指定します。
'文字列'.replace('置換対象の文字', '置換後の文字')
言葉で説明してもイメージしにくいと思うので、まず例を見てみましょう。次のコードでは意図的に3つの空白を挿入した文章をstr内に入れています。この空白を削除してみましょう。
[サンプルコード]
str = ' Python × 業務効率化の解説サイト '
print(str)
print(str.replace(' ', ''))
[出力結果]
Python × 業務効率化の解説サイト
Python×業務効率化の解説サイト
strの中には先頭・文章中・末尾それぞれに空白が入っていますが、置換は全ての空白が対象です。一行目ではオリジナルの文章を、二行目ではreplaceメソッドで空白が削除された文章を表示させています。二行目でちゃんと空白が消えたことが分かりますね。
なおreplaceメソッドの対象は“特定の文字”なので、空白以外にも文中の文字を指定の文字へ置換することも可能です。
先頭の空白を削除:lstrip
先頭の空白だけを削除したい場合は、lstripメソッドを使いましょう。
replaceメソッドと違って引数には何も指定しなくても良いので、簡単に扱えます。
[サンプルコード]
str = ' Python × 業務効率化の解説サイト '
print(str)
print(str.lstrip())
[出力結果]
Python × 業務効率化の解説サイト
Python × 業務効率化の解説サイト
文章の途中にある空白はそのままに、先頭の空白だけ削除されました。
末尾の空白を削除:rstrip
rstripメソッドは文章の最後にある空白を削除する関数です。
lstripメソッドと同じく、引数に何も設定しなくても問題ありません。使い方もIstripメソッドと同じです。
[サンプルコード]
str = ' Python × 業務効率化の解説サイト '
print(str)
print(str.rstrip())
[出力結果]
Python × 業務効率化の解説サイト
Python × 業務効率化の解説サイト
出力結果はこちらですが、今回の例では先頭と文章中の空白が残っている事しか分かりません。
末尾だと分かりにくいので、len関数を利用して文字の長さを取得してみました。
22
21
空白も文字数に含まれるので、一行目は末尾に空白があり、二行目は空白分のデータがない事が分かりますね。
先頭と末尾両方の空白を削除:strip
stripメソッドは先頭と末尾の空白を削除してくれるメソッドです。繰り返しのようですが、書き方もlstrip、rstripと同じです。
[サンプルコード]
str = ' Python × 業務効率化の解説サイト '
print(str)
print(str.strip())
[出力結果]
Python × 業務効率化の解説サイト
Python × 業務効率化の解説サイト
先頭の空白は削除されてますが、末尾の空白が削除されているか分からないので、len関数で確認してみました。
22
20
stripメソッドを利用した文字列は、先頭と末尾の二つ分の文字が削除されている事が分かります。
3つとも似たような名前のメソッドですが、文字列の先頭=左端(left)の空白は“lstrip”、末尾である右端(right)は“rstrip”、そしてそのどちらも消すのが“strip”メソッドと考えると覚えやすいですね!
連続する空白を1つにする:split
splitメソッドでは空白を区切り文字として分割することができます。以下のサンプルで長大な空白を1つに縮めてみましょう。
[サンプルコード]
str = ' Python × 業務効率化の解説サイト '
print(str)
print(str.split())
print(' '.join(str.split()))
[出力結果]
Python × 業務効率化の解説サイト
['Python', '×', '業務効率化の解説サイト']
Python × 業務効率化の解説サイト
今回空白が不規則に入力されていますが、まず空白を区切り文字として文字を分割させます。
分割後joinを利用して分割された文字を繋げていきます。
繋げる際joinの前に空白を設定すると、一つの空白だけで区切られるようになります。
splitメソッドの引数には何も入力しなくても利用できますが、区切り文字を指定したい場合は引数をセットします。
例えばメールアドレスの@より前と後を分けたい場合は下記のように設定します。
mail = 'example@gmail.com'
print(mail.split('@'))
//実行結果
['example', 'gmail.com']