Pythonでプログラミングをしていると、ユーザーからの入力データやファイルから読み込んだテキストなど、文字列に含まれる不要な空白を削除したい場面が頻繁に訪れます。
一口に「空白」と言っても、その種類や場所は様々です。
- 文字列の両端にある余分なスペース
- 文字列に含まれるすべてのスペース
- 単語と単語の間に複数連続するスペース
この記事では、これらの様々なケースに対応するため、Pythonで空白を削除するための代表的な方法を、目的別に徹底解説します。
基本的なstrip()から、高速なtranslate()まで、サンプルコード付きでわかりやすく紹介するので、目的に応じた方法が見つかるでしょう。

本気で未経験からエンジニア転職を目指すなら、
日本最大級の比較サイト「マイベスト」で【4年連続人気NO.1】となった
RUNTEQ(ランテック)一択!

✅受講生からの評判が驚くほど良い
✅学習はハードだが未経験とは思えないほど高いスキルが身に付く
✅挫折させない万全なサポート体制が用意されている
✅採用面接で担当者に刺さるレベルの高い「ポートフォリオ」を作成できる
✅給付金を使えば実質約13万円という格安料金で受講できる
\ もちろん勧誘行為は一切なし! 相談だけでもOK! /
【目的別】Pythonでの空白削除方法の早見表
まずは結論から。
これから解説する内容を早見表にまとめました。
自分のやりたいことに最も近い方法から読み進めてみてください。
| 削除したい空白の種類 | 推奨されるメソッド | 特徴 |
|---|---|---|
| 文字列の両端にある空白や改行 | strip(), lstrip(), rstrip() |
最も基本的でよく使われる。高速。 |
| 文字列に含まれるすべての空白 | replace() |
構文がシンプルで直感的。分かりやすい。 |
| 文字列に含まれるすべての空白(高速) | translate() |
大量データの場合replace()より高速。 |
| 単語間の連続する空白を1つにまとめる | split() と join() |
複数の空白を単一のスペースに正規化できる。 |
方法1:両端の空白・改行を削除する (strip, lstrip, rstrip)
文字列の先頭や末尾に存在する不要な空白を削除するのは、最も一般的なユースケースです。
これにはstrip()メソッド群を使います。
strip():両端の空白を削除
strip()は、文字列の両端にある空白文字(スペース、タブ \t、改行 \n など)をすべて取り除きます。
サンプルコード
text = " Hello, World! \n"
# 両端の空白文字を削除
cleaned_text = text.strip()
print(f"元の文字列: '[{text}]'")
print(f"strip()後の文字列: '[{cleaned_text}]'")
実行結果
元の文字列: '[ Hello, World!
]'
strip()後の文字列: '[Hello, World!]'
ソースコードの解説
text変数には、先頭と末尾に複数の半角スペースと、末尾に改行文字\nが含まれています。
text.strip()を実行することで、これらの空白文字がすべて削除され、純粋なHello, World!だけが残ります。
文字列の内部にある空白は削除されない点に注意してください。
lstrip() と rstrip()
lstrip():文字列の左側(Left)、つまり先頭の空白だけを削除します。rstrip():文字列の右側(Right)、つまり末尾の空白だけを削除します。
サンプルコード
text = " Hello, World! \n"
# 左端の空白だけを削除
left_cleaned = text.lstrip()
print(f"lstrip()後の文字列: '[{left_cleaned}]'")
# 右端の空白だけを削除
right_cleaned = text.rstrip()
print(f"rstrip()後の文字列: '[{right_cleaned}]'")
実行結果
lstrip()後の文字列: '[Hello, World!
]'
rstrip()後の文字列: '[ Hello, World!]'
```lstrip()`は先頭の空白のみ、`rstrip()`は末尾の空白と改行文字のみを削除していることが分かります。
---
## 方法2:文字列中のすべての空白を削除する (`replace`)
文字列の端だけでなく、**内部に含まれるものも含めてすべての空白を削除したい**場合は、`replace()`メソッドを使うのが最もシンプルで直感的です。
#### サンプルコード
```python
text = "p y t h o n is fun !"
# 半角スペースをすべて削除
no_space_text = text.replace(' ', '')
# 全角スペースをすべて削除
no_full_space_text = text.replace(' ', '')
# 半角・全角スペースを両方削除
no_all_spaces_text = text.replace(' ', '').replace(' ', '')
print(f"元の文字列: '{text}'")
print(f"半角スペース削除後: '{no_space_text}'")
print(f"全角スペース削除後: '{no_full_space_text}'")
print(f"すべてのスペース削除後: '{no_all_spaces_text}'")
実行結果
元の文字列: 'p y t h o n is fun !'
半角スペース削除後: 'python is fun!'
全角スペース削除後: 'p y t h o nis fun !'
すべてのスペース削除後: 'pythonisfun!'
ソースコードの解説
replace('置換前の文字列', '置換後の文字列')は、第一引数に指定した文字列を、第二引数の文字列にすべて置き換えます。
空白を削除したい場合は、第二引数に空の文字列''を指定します。
この例のように、replace()をメソッドチェーンで繋げることで、半角スペースと全角スペースの両方を一度に削除することも可能です。
方法2:すべての空白を高速に削除する (translate)
大量のテキストデータに含まれるすべての空白を削除する場合など、処理速度が重要になる場面では、replace()よりも高速なtranslate()メソッドが有効です。
translate()は少し特殊で、str.maketrans()で作成した「変換テーブル」と組み合わせて使います。
サンプルコード
import string
text = "p y t h o n is fun !\t\n"
# 削除したい文字のリスト
chars_to_remove = ' \t\n' # 半角スペース, 全角スペース, タブ, 改行
# 変換テーブルを作成
# 第3引数に削除したい文字を指定する
translation_table = str.maketrans('', '', chars_to_remove)
# translate()で一括削除
fast_cleaned_text = text.translate(translation_table)
print(f"元の文字列: '{text}'")
print(f"translate()後の文字列: '{fast_cleaned_text}'")
実行結果
元の文字列: 'p y t h o n is fun !
'
translate()後の文字列: 'pythonisfun!'
ソースコードの解説
str.maketrans('', '', '削除したい文字群')で、どの文字を削除するかのルールを定義した変換テーブルを作成します。- 作成したテーブルを
text.translate()の引数に渡すことで、指定されたすべての文字が一括で削除されます。
replace()を何度も呼び出すのに比べて、translate()は内部的に1回の操作で処理が完了するため、特に削除したい文字の種類が多い場合にパフォーマンスの優位性が現れます。
方法3:単語間の連続する空白を1つにまとめる (split + join)
「空白を完全に削除する」のではなく、「複数連続する空白を、単一の半角スペースに統一したい」という整形ニーズもよくあります。
この場合は、split()とjoin()を組み合わせるテクニックが非常に有効です。
サンプルコード
text = "Hello World! \n Welcome to \t Python."
# split()で空白文字を区切りに単語リストに分割
words = text.split()
print(f"split()後のリスト: {words}")
# ' ' (半角スペース) を区切り文字として再結合
normalized_text = ' '.join(words)
print(f"join()後の文字列: '{normalized_text}'")
実行結果
split()後のリスト: ['Hello', 'World!', 'Welcome', 'to', 'Python.']
join()後の文字列: 'Hello World! Welcome to Python.'
ソースコードの解説
text.split()を実行すると、文字列は半角スペース、全角スペース、タブ、改行といったすべての連続する空白文字を区切りとして分割され、単語のリストが生成されます。' '.join(words)では、その単語リストの各要素を' '(半角スペース)で繋ぎ合わせて、一つの新しい文字列を生成します。
この2段階の処理により、種類や数がバラバラだった空白が、きれいな半角スペース1つに正規化されます。
まとめ
以上、Pythonで文字列から空白を削除するための様々な方法を、目的別に解説しました。
なお、Pythonを体系的に学んだり、Pythonのスキルを高めたりするためには、プログラミングスクールを利用するのも有効です。
細かな疑問がすぐに解決するだけでなく、現役エンジニアが「質の高いポートフォリオ」を作成するための手助けをしてくれたり、エンジニア就職・転職のコツを教えてくれたりするなど、様々なメリットがありますので、独学に疲れた方は検討してみてはいかがでしょうか。

\ 登録・利用はすべて完全無料! /
実務未経験エンジニアでも希望の転職先を見つけやすい!!
週1~3日からできる副業案件多数!!
フリーランス案件の単価の高さは圧倒的!!




