1. はじめに
Pythonで文字列を扱う際、「余分な空白を削除したい」と感じる場面はよくあります。たとえば、ユーザーからの入力やWebから取得したデータには不要な空白が含まれていることが多く、そのままでは正しく処理できないことがあります。
この記事では、Python|文字列の空白文字を削除する方法について、基本的な使い方から応用例まで丁寧に解説します。
初学者にも理解しやすいように、具体的なコード例や実行結果も交えて解説しますので、ぜひ最後までご覧ください。
2. Pythonで文字列の空白文字を削除する基本
2-1. strip(), lstrip(), rstrip() の使い方
Pythonには、文字列の前後の空白を削除するための便利なメソッドが用意されています。
strip()
:前後の空白をすべて削除lstrip()
:左側(先頭)の空白を削除rstrip()
:右側(末尾)の空白を削除
text = " Hello, Python! "
print("[" + text.strip() + "]")
print("[" + text.lstrip() + "]")
print("[" + text.rstrip() + "]")
実行結果:
[Hello, Python!]
[Hello, Python! ]
[ Hello, Python!]
2-2. replace()を使って空白を削除する
replace()
メソッドを使うと、文字列中の空白文字(スペース)をすべて削除できます。
text = " H e l l o , P y t h o n ! "
no_space = text.replace(" ", "")
print(no_space)
実行結果:
Hello,Python!
2-3. 正規表現を使って全種類の空白を除去
タブや改行なども含めて空白を除去したい場合は、re
モジュールのsub()
を使うと便利です。
import re
text = " \tHello,\nPython! \r"
cleaned = re.sub(r"\s+", "", text)
print(cleaned)
実行結果:
Hello,Python!
3. よくある使い方・応用例
3-1. 入力値の空白除去
ユーザーの入力には余分なスペースが含まれることが多いため、事前にstrip()
で整形しておくのが一般的です。
user_input = input("名前を入力してください:")
name = user_input.strip()
print(f"こんにちは、{name}さん!")
3-2. データ前処理での活用(CSVデータの整形)
CSVなどの外部データを読み込む際、空白文字の除去はデータクレンジングの基本です。
data = [" Alice ", " Bob ", "Charlie "]
cleaned_data = [name.strip() for name in data]
print(cleaned_data)
実行結果:
['Alice', 'Bob', 'Charlie']
3-3. Webスクレイピング時の整形処理
Webスクレイピングで取得したHTMLのテキストには、改行やタブ、余分なスペースが含まれることがあります。整形してから保存・解析することで、より使いやすいデータになります。
以下は、re.sub()
を使って改行やタブを削除し、1つのスペースに統一する処理の例です。
import re
# Webから取得したHTMLテキストの例(実際はBeautifulSoupなどで抽出後)
html_text = "\n\t <div> Hello World! </div>\n"
# 空白・タブ・改行を1つのスペースに置換し、前後のスペースを削除
cleaned_text = re.sub(r"\s+", " ", html_text).strip()
print(cleaned_text)
実行結果:
<div> Hello World! </div>
このように、正規表現 \s+
を使うことで、スペース・タブ・改行などをまとめて1つの半角スペースに変換できます。Webスクレイピング後のデータクレンジングとして非常に有用です。
4. 注意点・エラー対策
4-1. replace()はスペースしか対象にできない
replace(" ", "")
は半角スペースしか削除できません。タブや改行には効果がないため、複数種類の空白を扱う場合はre.sub(r"\s+", "")
を使いましょう。
4-2. strip()は文字列の中の空白は削除しない
strip()
は文字列の先頭と末尾しか処理しないため、間の空白が気になる場合にはreplace()
やre.sub()
を使う必要があります。
4-3. 全角スペースは別扱い
全角スペース(\u3000)はstrip()
やreplace(" ", "")
では削除できません。以下のように明示的に指定する必要があります。
text = " 全角スペースを削除 "
cleaned = text.replace("\u3000", "").strip()
print(cleaned)
実行結果:
全角スペースを削除
5. まとめ
この記事では、Pythonで文字列の空白文字を削除する方法について、strip()
やreplace()
、re.sub()
といった基本的な手法から、応用的な使い方まで幅広く紹介しました。
strip()
:前後の空白を削除replace()
:特定の文字(例:スペース)を置換re.sub()
:正規表現を使って複数種類の空白を一括除去
空白処理は、実務でのデータ整形やユーザー入力の正規化に欠かせないスキルです。ぜひ本記事を参考に、自分のコードにも取り入れてみてください。
学習のコツとしては、「どの種類の空白を削除したいか」を明確にしてから、最適な方法を選ぶことが重要です。