🐍 Python
str.strip(chars=None)
文字列の前後にある空白・改行・タブなどの余分な文字を取り除くメソッドです。ファイルの1行を読み込んだときの末尾の改行や、ユーザー入力の前後の空白を除去する場面で頻出します。
構文: str.strip(chars=None) # 前後
str.lstrip(chars=None) # 左(先頭)のみ
str.rstrip(chars=None) # 右(末尾)のみ
戻り値: 除去後の新しい文字列
基本の使い方:前後の空白を除去する
引数なしで呼ぶと、前後の空白文字(半角スペース・タブ・改行など)をまとめて取り除きます。
s = " hello world "
print(repr(s.strip())) # 'hello world'
lstrip・rstripで片側だけ除去する
lstrip()は左側(先頭)、rstrip()は右側(末尾)だけを除去します。文字を引数に渡すと、その文字の集合を除去対象にできます。
s = "***title***"
print(s.lstrip("*")) # 'title***'
print(s.rstrip("*")) # '***title'
chars引数は「文字の集合」であって「文字列」ではない
ここが最も誤解されやすいポイントです。strip("xy")は「"xy"という文字列を取り除く」のではなく、「xまたはyという文字を、前後から続く限り取り除く」という意味です。
s = "xxhelloxx"
print(s.strip("x")) # 'hello'
ファイルの行末改行を除去する定番パターン
テキストファイルを1行ずつ読み込むと、各行の末尾に改行文字\nが残ります。strip()で除去してから処理するのが定番です。
line = "192.168.1.1\n"
print(repr(line.strip())) # '192.168.1.1'
パラメータ
- chars(省略可)
- 除去したい文字の集合(文字列として指定)。省略時は空白文字(半角スペース・タブ・改行など)が対象
💡 replaceとの違い
strip()は文字列の前後だけを対象にし、途中にある文字は一切変更しません。文字列の途中も含めてすべて置き換えたい場合はstr.replace()を使います。「AIが生成したコードで空白除去のつもりでreplace(" ", "")と書かれていたら、それは前後だけでなく文字列中のすべての空白を消してしまう」という違いを意識しましょう。