[解決!Python]文字列から空白文字を削除するには解決!Python

文字列のstrip系のメソッド、replaceメソッド、maketrans/translateメソッド、splitメソッドを使って文字列から空白文字を削除する方法を紹介する。

» 2023年12月01日 05時00分 公開
[かわさきしんじDeep Insider編集部]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「解決!Python」のインデックス

連載目次

* 本稿は2022年6月7日に公開された記事をPython 3.12.0で動作確認したものです(確認日:2023年12月1日)。


# 文字列前後の空白文字を削除
s = '   sample string   '
print(s, end='*\n'#    sample string   *
result = s.strip()
print(result, end='*\n'# sample string*

# 文字列先頭の空白文字を削除
s = '   sample string   '
print(s, end='*\n'#    sample string   *
result = s.lstrip()
print(result, end='*\n'# sample string   *

# 文字列末尾の空白文字を削除
s = '   sample string   '
print(s, end='*\n'#    sample string   *
result = s.rstrip()
print(result, end='*\n'#    sample string*

# 上記は全角の空白文字や改行文字も削除する
s = '  \tサンプル 文字列\n  '
print(s, end='*\n')
# 出力結果
#      サンプル 文字列
#  *
result = s.strip()
print(result, end='*\n'# サンプル 文字列*

# replaceメソッドで文字列に含まれている空白文字を削除
s = '+  foo bar baz  '
print(s, end='*\n'# +  foo bar baz  *
result = s.replace(' ', '')
print(result)  # +foobarbaz

# 複数の空白文字をreplaceメソッドで削除
s = '  \tサンプル 文字列\n  '
result = s.replace(' ', '').replace('\t', '').replace('\n', '')
print(result)  # サンプル文字列

# 文字列のmaketrans/translateメソッドを使用する
d = { k: '' for k in [' ', ' ', '\t', '\n']}
tbl = str.maketrans(d)
s = '  \tサンプル 文字列\n  '
result = s.translate(tbl)
print(result)  # サンプル文字列

# 文字列に含まれている空白文字を削除
s = '  \tサンプル \t 文字列\n  '
print(s, end='*\n')
# 出力結果:
#      サンプル        文字列
#  *

result = ''.join(s.split())
print(result)  # サンプル文字列

# 文字列中の連続する空白文字を単独の空白文字にする
s = '  \tサンプル \t 文字列\n  '
print(s, end='*\n')
# 出力結果:
#      サンプル        文字列
#  *

result = ' '.join(s.split())
print(result)  # サンプル 文字列


文字列のstrip/lstrip/rstripメソッド

 文字列の先頭または末尾にある空白文字を削除するには、以下の3つのメソッドが使える。

  • stripメソッド:文字列の先頭/末尾にある空白文字を削除
  • lstripメソッド:文字列の先頭にある空白文字を削除
  • rstripメソッド:文字列の末尾にある空白文字を削除

 これらのメソッドはいずれも引数を与えなければ、空白文字やタブ文字、改行文字などを文字列の先頭または末尾から削除する。これらは呼び出しに使用した文字列を改変するのではなく、文字列から空白文字を取り除いた「新しい文字列」を戻り値とする。

 stripメソッドは文字列の先頭と末尾にある空白文字を削除するものだ。その使用例を以下に示す。

s = '   sample string   '
print(s, end='*\n'#    sample string   *
result = s.strip()
print(result, end='*\n'# sample string*


 この例では3つの半角の空白文字を先頭と末尾に含む「 sample string 」に対してstripメソッドを呼び出している。そのため、stripメソッドを呼び出すと「 sample string 」から前後の空白文字が削除された「sample string」が得られる。また、print関数呼び出しでは末尾がどこかを明確にするため、「*」に続けて改行を行うようにしている。その結果、「sample string*」と最後に「*」が表示されている(以下、同様)。

 lstripメソッドは文字列の先頭にある空白文字を削除する。以下に例を示す。

s = '   sample string   '
print(s, end='*\n'#    sample string   *
result = s.lstrip()
print(result, end='*\n'# sample string   *


 この例では文字列の末尾にある空白文字は削除されないので、最後のprint関数の呼び出しでは「sample string *」のように3つの空白文字の後に「*」が表示されている点に注目。

 rstripメソッドは文字列の末尾にある空白文字を削除する。以下に例を示す。

s = '   sample string   '
print(s, end='*\n'#    sample string   *
result = s.rstrip()
print(result, end='*\n'#    sample string*


 この例では文字列末尾の空白文字が削除されたので、「string」に続けて「*」が表示されている。また、先頭には3つの空白文字が含まれている。

 上述した通り、strip系のメソッドはいわゆる半角の空白文字だけではなく、全角の空白文字やタブ文字、改行文字なども削除する。以下に例を示す。

s = '  \tサンプル 文字列\n  '
print(s, end='*\n')
# 出力結果
#      サンプル 文字列
#  *


 変数sには'  \tサンプル 文字列\n  'のようにタブ文字(\t)と改行(\n)を含んだ文字列が代入されている。画面では分かりづらいが空白文字は全角の空白文字(コードポイントは0x3000)だ。よって、これをprint関数で出力すると上のように全角の空白文字2つの後、次のタブ位置で「サンプル 文字列」がそろうように出力され、そこで改行が行われて、残りの文字列(空白文字3つと「*」)が出力される。

 この文字列にstripメソッドを呼び出すと、文字列の先頭と末尾にある全角の空白文字/タブ文字/改行文字が削除され、次のように出力される。

result = s.strip()
print(result, end='*\n'# サンプル 文字列*


 ここまで文字列の先頭または末尾にある空白文字を削除する方法を紹介してきた。文字列中にある空白文字を削除する簡単な方法は次に紹介するreplaceメソッドを使うことだ。また、maketrans/translateメソッドも使える。

文字列のreplace/maketrans/translateメソッド

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。