Python

【Python】文字列の空白を削除する方法を解説

この記事では、Pythonで文字列中の空白を削除する方法を解説します。

文字列を扱う場合、無駄な空白が含まれていたり空白の数が統一されていないと厄介だったりします。そんな時は、空白を削除、または統一して扱いやすい文字列を生成しましょう!

それでは、文字列中の空白を削除する方法を見ていきます。

すべての空白を削除する

文字列中の全ての空白を削除するには、str型のreplaceメソッドを使うと簡単です。replaceメソッドは任意の文字列を指定した文字列に置き換えるメソッドです。

str.replace(old, new[, count])

old引数の文字列をnew引数の文字列で置き換えます。今回の場合では、空白を空文字に置き換えることで文字列中の空白を全て削除できます。

text = 'A B C  D       E'

result = text.replace(' ', '')
print(result)

実行結果

ABCDE

これで全ての空白を削除できました。

先頭と末尾の空白を削除する

文字列の先頭および末尾の空白を削除したい場合は、str型のstripメソッドを使います。stripメソッドは指定した文字単位で先頭および末尾から文字列を削るメソッドです。

str.strip([chars])

引数を指定しないことで先頭および末尾の空白を全て削除することができます。

text = '    A B C  D       E    '

result = text.strip()
print(result)

実行結果

A B C  D       E

また、先頭の空白のみ削除したい場合はstr型のlstripメソッドを使い、末尾の空白のみ削除したい場合はstr型のrstripメソッドを使います。

使い方はどちらもstripメソッドと同じです。

text = '    A B C  D       E    '

result = text.lstrip()
print(result)

text = '    A B C  D       E    '

result = text.rstrip()
print(result)

実行結果

A B C  D       E    
    A B C  D       E

文字列中の空白を残したい場合に便利です。

連続している空白を1つにする

文字列中の連続している空白を1つにしたい場合は、reモジュールのsubメソッドを使います。subメソッドは指定したパターンにマッチした箇所を任意の文字列に置き換えるメソッドです。

import re

re.sub(pattern, repl, string, count=0, flags=0)

string引数に指定した文字列内のpattern引数にマッチした箇所をrepl引数に置き換えます。今回の場合は、連続した空白をパターンで指定し、空白1つに置き換えます。

import re

text = '    A B C  D       E    '

res = re.sub('\s+', ' ', text)
print(res)

実行結果

 A B C D E 

これでは先頭と末尾に空白が残ってしまうので先にstripメソッドで前後の空白を削除しておく。

import re

text = '    A B C  D       E    '

res = re.sub('\s+', ' ', text.strip())
print(res)

実行結果

A B C D E

これで文字列中の空白を1つに統一できました。