Pythonお悩み解決

Pythonに関する疑問や悩みにこたえるブログです

文字列の前後の空白文字を除去したい: stripメソッド

今回は文字列の前後の空白文字を除去する方法を紹介します。

前後の空白文字を除去する: strip()メソッド

文字列のstrip()メソッドを使うと、文字列の前後(先頭と末尾)の空白文字を除去できます。

使い方は以下の通りです。

文字列.strip()

実際に使ってみましょう。

>>> s = '   こんにちは   '
>>> s.strip()
'こんにちは'

「こんにちは」の前後にはそれぞれ3つずつ半角スペースがありますが、それらが除去されたことを確認できました。

このように、文字列前後の連続する空白文字がまとめて除去されます。

なお、このメソッドは空白文字を除去した新しい文字列を返すため、元の文字列sはそのままです。

>>> # 元の文字列は変更されない
>>> s
'   こんにちは   '

strip()メソッドは前後の空白文字を除去しましたが、文字列の先頭部分の空白文字のみ除去したい場合や、末尾部分の空白文字を除去したい場合もあります。

これにはlstrip()メソッドやrstrip()メソッドが使えます。

先頭の空白文字を除去する: lstrip()メソッド

文字列の先頭部分の空白文字のみ除去したい場合lstrip()メソッドが使えます。

これは以下のように、先頭部分の空白文字のみ除去した文字列を返します。

>>> s.lstrip()
'こんにちは   '

末尾の空白文字を除去する: rstrip()メソッド

文字列の末尾部分の空白文字のみ除去したい場合rstrip()メソッドが使えます。

これは以下のように、末尾部分の空白文字のみ除去した文字列を返します。

>>> s.rstrip()
'   こんにちは'

なお、lstrip()lleft(左)、rstrip()rright(右)と考えれば覚えやすいです。

除去対象の空白文字

除去対象の空白文字は半角スペースだけではなく、改行文字やタブ文字も含まれます。

そのため、以下のようにrstrip()メソッドで末尾の改行文字を除去できます。

>>> # 改行文字を含む文字列
>>> s2 = 'こんにちは\n'
>>> s2.rstrip()
'こんにちは'

これはたとえばopen()関数でテキストファイルを開き、for文で1行ずつ処理する場合、strip()rstrip()を使って末尾の改行文字を除去するのに使えます。

with open("sample.txt") as f:
    for line in f:
        # 末尾の改行文字を除去
        line = line.rstrip()
        ...

まとめ

  • 前後の空白文字を除去するには strip()メソッドを使う
  • 先頭の空白文字を除去するには lstrip()メソッドを使う
  • 末尾の空白文字を除去するには rstrip()メソッドを使う
  • 空白文字には改行文字やタブ文字も含まれる

参考