Pythonで文字列の空白削除:strip, lstrip, rstripの使い方と注意点

ユーザーからの入力データやファイルから読み込んだテキスト行には、意図しない「空白(スペース)」や「改行コード」が前後についていることがよくあります。これらが残っていると、文字列の比較やデータベースへの保存時に不具合の原因となります。

Pythonの文字列型には、これらの不要な文字を簡単に除去するためのメソッドとして strip(), lstrip(), rstrip() の3つが用意されています。

この記事では、それぞれのメソッドの違いと具体的な使用シーンについて解説します。

目次

1. 両端の空白を削除する: strip()

strip() メソッドは、文字列の先頭(左側)と末尾(右側)の両方にある空白文字をすべて削除します。

ここでの「空白文字」には、半角スペースだけでなく、以下の文字も含まれます。

  • 全角スペース(Pythonの仕様による)
  • タブ (\t)
  • 改行 (\n, \r)

具体的な使用例:ユーザー入力のクリーニング

入力フォームなどで、ユーザーが誤って前後にスペースを入れてしまった場合などに有効です。

# ユーザーが入力したID(前後にスペースや改行が含まれている)
user_input_id = "  user001 \n"

# strip() で前後の不要な文字を除去
cleaned_id = user_input_id.strip()

print(f"元の文字列: '{user_input_id}'")
print(f"処理結果  : '{cleaned_id}'")

# 比較判定も正しく行えるようになる
if cleaned_id == "user001":
    print("IDが一致しました。")

実行結果:

元の文字列: '  user001 
'
処理結果  : 'user001'
IDが一致しました。

2. 先頭の空白のみ削除する: lstrip()

lstrip() (Left Strip) メソッドは、文字列の**左側(先頭)**にある空白文字のみを削除します。末尾の空白は残ります。

具体的な使用例:インデントの削除

行の先頭にあるインデント(スペースやタブ)を取り除きたい場合に使用します。

# 先頭にインデントがあるソースコードの行
code_line = "    print('Hello')"

# 左側の空白を削除
no_indent = code_line.lstrip()

print(f"元: '{code_line}'")
print(f"後: '{no_indent}'")

実行結果:

元: '    print('Hello')'
後: 'print('Hello')'

3. 末尾の空白のみ削除する: rstrip()

rstrip() (Right Strip) メソッドは、文字列の**右側(末尾)**にある空白文字のみを削除します。

具体的な使用例:改行コードの削除

ファイルから行を読み込んだ際、末尾に付いている改行コード(\n)を削除する場合によく使用されます。

# ファイルから読み込んだ行(末尾に改行がある)
file_line = "data_record,123\n"

# 右側の空白(改行含む)を削除
clean_line = file_line.rstrip()

print(f"元: '{file_line}'")
print(f"後: '{clean_line}'")

実行結果:

元: 'data_record,123
'
後: 'data_record,123'

応用:特定の文字を削除する

これらのメソッドに引数として文字列を渡すと、空白ではなく指定した文字を端から削除することができます。

# 前後のアスタリスク(*)とスペースを取り除く
# 引数に含まれる文字が端にある限り削除し続ける
header_text = "** Chapter 1 **"

cleaned_header = header_text.strip("* ")

print(cleaned_header)

実行結果:

Chapter 1

まとめ

  • strip(): 両端の空白・改行を削除(最も一般的)。
  • lstrip(): 左側(先頭)のみ削除。
  • rstrip(): 右側(末尾)のみ削除(改行削除によく使う)。
  • 引数を指定すれば、空白以外の特定の文字も削除可能です。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次