記事内にはプロモーションが含まれることがあります

Pythonで空白を削除する方法!strip・replace・translateなど

Pythonで空白を削除する方法!strip・replace・translateなど プログラミングの疑問解決

Pythonでプログラミングをしていると、ユーザーからの入力データやファイルから読み込んだテキストなど、文字列に含まれる不要な空白を削除したい場面が頻繁に訪れます。

一口に「空白」と言っても、その種類や場所は様々です。

  • 文字列の両端にある余分なスペース
  • 文字列に含まれるすべてのスペース
  • 単語と単語の間に複数連続するスペース

この記事では、これらの様々なケースに対応するため、Pythonで空白を削除するための代表的な方法を、目的別に徹底解説します。

基本的なstrip()から、高速なtranslate()まで、サンプルコード付きでわかりやすく紹介するので、目的に応じた方法が見つかるでしょう。

【本記事の信頼性】

  • 執筆者は元エンジニア
  • 大手プログラミングスクールのWebディレクター兼ライターを経験
  • 自らも地元密着型のプログラミングスクールを運営
忖度一切なし!
受講生から評判の良いプログラミングスクール
スクール
特徴
受講料金
大手比較サイトで4年連続人気NO.1!受講生からの評判も非常に高く、Web系のエンジニアを目指すならRUNTEQ一択。 550,000円(給付金適用あり)
月単価80万円以上の現役エンジニア講師による指導!一度入会すればサポートは半永久的。 498,000円
格安で質の高いWeb制作スキルを習得したい人におすすめ!業界最安級の料金でありながら、コミュニティやサポートが充実。 129,800円~
完全無料でプログラミングが学べる貴重なスクール!最短1ヶ月で卒業可能。ゼロスク運営会社への就職もできる。 無料
長期間に渡って学習し、希少人材を目指す人に最適なスクール!受講料は高いものの、高収入を得られる人材を目指せる。 96~132万円

【目的別】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!'

ソースコードの解説

  1. str.maketrans('', '', '削除したい文字群')で、どの文字を削除するかのルールを定義した変換テーブルを作成します。
  2. 作成したテーブルを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.'

ソースコードの解説

  1. text.split()を実行すると、文字列は半角スペース、全角スペース、タブ、改行といったすべての連続する空白文字を区切りとして分割され、単語のリストが生成されます。
  2. ' '.join(words)では、その単語リストの各要素を ' '(半角スペース)で繋ぎ合わせて、一つの新しい文字列を生成します。

この2段階の処理により、種類や数がバラバラだった空白が、きれいな半角スペース1つに正規化されます。

まとめ

以上、Pythonで文字列から空白を削除するための様々な方法を、目的別に解説しました。

なお、Pythonを体系的に学んだり、Pythonのスキルを高めたりするためには、プログラミングスクールを利用するのも有効です。

細かな疑問がすぐに解決するだけでなく、現役エンジニアが「質の高いポートフォリオ」を作成するための手助けをしてくれたり、エンジニア就職・転職のコツを教えてくれたりするなど、様々なメリットがありますので、独学に疲れた方は検討してみてはいかがでしょうか。

Follow me!

PAGE TOP