🐍 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(" ", "")と書かれていたら、それは前後だけでなく文字列中のすべての空白を消してしまう」という違いを意識しましょう。

← Python str クイックリファレンス一覧へ戻る