Pythonで文字列を扱うとき、文字の前後に不要な空白や改行が入ってしまうことがあります。
例えば、ユーザーが入力した文字列の前後にスペースがあったり、CSVファイルを読み込んだときに余分な改行が含まれていたりといったケースです。
そんなときに活躍するのが .strip()
という文字列メソッドです。
この記事では .strip()
の使い方と、よくある活用シーンを具体例を交えてわかりやすく解説します。
.strip()とは
.strip()
は、文字列の先頭と末尾にある空白や改行などの不要な文字を取り除くためのメソッドです。
文字列の中央(途中)にあるスペースは削除しません。
この .strip()
は、Pythonの標準型である str
(文字列型)がもともと持っている標準メソッドです。
そのため、文字列であればどんな値でもすぐに .strip()
を使うことができます。
使い方の具体例
対象の文字列型の後に .strip()
と指定することで利用することができます。
1 2 3 4 |
text = " Hello, World! \n" cleaned = text.strip() print(cleaned) |
このコードでは、文字列 " Hello, World! \n"
の前後にあるスペースと改行が取り除かれ、結果は次のようになります。
1 2 |
Hello, World! |
stripの対象となる文字
stripの対象となる文字に関しては、デフォルトで以下のような空白を意味する文字全般が取り除かれます。
- 半角スペース
" "
- 改行
\n
- タブ
\t
- 復帰文字
\r
任意の文字を削除したい場合
.strip()
の ()
内に削除したい文字を文字列として指定すれば、その文字だけを前後から削除することができます。
基本的な使い方
1 2 3 4 |
text = ">>>Title<<<" cleaned = text.strip("><") print(cleaned) # → "Title" |
">"
と "<"
が文字列の前後にある場合、それぞれ独立して削除されます。中央の "Title"
部分は削除対象文字が含まれていないのでそのまま残ります。
.strip("><")
の仕組み
.strip("><")
の ""><"
は、「文字列として」ではなく「削除対象の文字集合」として解釈されます。
つまり、
>
でも<
でも、どちらか一方が前後にあれば削除対象- 順番や並び方、ペアであるかどうかは一切関係なし
- 削除対象は先頭と末尾のみ(中央には影響しない)
応用例
1 2 3 |
text = "<><>Data<><>" print(text.strip("<>")) # → "Data" |
<
や >
が交互にあってもすべて削除され、中央の "Data"
だけが残ります。
空白は削除されない点に注意
引数を指定しない .strip()
は空白・改行・タブなども含めて削除しますが、引数を指定した場合は「その文字だけ」しか削除されません。
1 2 3 |
text = " >>>Title<<< " print(text.strip("><")) # → " Title " |
この場合、>
と <
は削除されますが、前後の空白 " "
は削除されません。
空白も一緒に削除したい場合は、空白文字も引数に含める必要があります。
1 2 |
print(text.strip(" ><")) # → "Title" |
前後どちらかだけ削除したいとき
場合によっては、文字列の先頭だけ、あるいは末尾だけの空白や特定の文字を削除したいことがあります。
そのようなケースでは、.strip()
の兄弟メソッドである .lstrip()
(left strip)と .rstrip()
(right strip)を使うことで、柔軟に対応できます。
先頭だけ削除したい場合:.lstrip()
.lstrip()
は、文字列の左側(先頭)にある空白や指定文字だけを削除します。
1 2 3 |
text = " Hello " print(text.lstrip()) # → "Hello " |
このように、前方の空白は削除されますが、末尾の空白はそのまま残ります。
末尾だけ削除したい場合:.rstrip()
一方で、.rstrip()
は文字列の右側(末尾)にある空白や指定文字を削除します。
1 2 |
print(text.rstrip()) # → " Hello" |
今度は末尾の空白だけが削除され、先頭の空白は残ったままになります。
これらのメソッドは .strip()
と同様に、引数で削除したい文字を指定することもできます。
文字列の整形が必要な場面では、目的に応じて .strip()
/ .lstrip()
/ .rstrip()
を使い分けるとより意図どおりの処理が行えます。
よくある使い方パターン
.strip()
のよくある使い方のパターン例としては下記が挙げられます。
ユーザー入力の前後スペースを除去
1 2 3 4 |
name = input("名前を入力してください:") clean_name = name.strip() print(f"こんにちは、{clean_name}さん") |
CSVデータやテキストファイル読み込み時の整形
1 2 3 4 |
with open('data.txt') as f: for line in f: print(line.strip()) |
辞書のキーや値を整える
1 2 3 |
raw_data = {'name ': ' Alice ', ' age': ' 30'} clean_data = {k.strip(): v.strip() for k, v in raw_data.items()} |
よくある疑問
文字列の途中にあるスペースは消せないの?
.strip()
はあくまで「前後」の空白を取り除くもので、中央の空白はそのまま残ります。
中央の空白も全部なくしたい場合は、.replace()
を使います。
1 2 3 |
text = "A B C" print(text.replace(" ", "")) # → "ABC" |
日本語の前後にあるスペースも削除できる?
日本語の前後にあるスペースも削除可能です。
1 2 3 4 |
text = " こんにちは " print(text.strip()) # → 全角スペースはそのまま残る print(text.strip(" ")) # → "こんにちは" |
ただし、全角スペースを削除したい場合は、引数で明示的に指定する必要があります。
list型やint型では使えないの?
使えません。
.strip()
は 文字列型(str)にしか存在しない標準メソッドです。
例えば次のように書くとエラーになります。
1 2 3 |
123.strip() # エラー [1, 2, 3].strip() # エラー |
文字列に対してのみ .strip()
が使える点に注意しましょう。
まとめ
.strip()
は文字列の前後にある空白・改行・タブなどを取り除くメソッドstr
型の標準メソッドとして最初から使える- 引数を指定すれば任意の文字も削除可能
.lstrip()
や.rstrip()
を使えば片側だけ除去も可能- list型やint型などには使えず、文字列専用である点にも注意
.strip()
はデータを加工・整形する際にとても便利なので、ぜひ積極的に使ってみてください。