ユーザーからの入力データやファイルから読み込んだテキスト行には、意図しない「空白(スペース)」や「改行コード」が前後についていることがよくあります。これらが残っていると、文字列の比較やデータベースへの保存時に不具合の原因となります。
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(): 右側(末尾)のみ削除(改行削除によく使う)。- 引数を指定すれば、空白以外の特定の文字も削除可能です。
