Pythonのstripメソッドは文字列の両端から、任意の不要な文字を削除してくれる便利なメソッドです。よく使うものですが、意外と見落とされている点もありますので、ここで細かい点も含めて使い方と注意点を紹介します。
1. Pythonのstripメソッドの使い方
Pythonのstripメソッドは次のように書きます。
''' stripメソッドの書き方 '''
文字列.strip(削除したい文字)
stripメソッドは文字列メソッドなので、先頭に削除したい不要な文字がある文字列を書きます。そしてstrip()の括弧の中に引数として削除したい文字を指定します。これから見ていくように、削除したい文字は複数指定することができますし、指定しないこともできます。
指定しない場合は、デフォルトでいくつかの不要な文字を自動で削除してくれるようになっています。
それでは実際に見ていきましょう。
1.1. Pythonのstripは改行や空白を自動で削除する
strip()メソッドの引数に何も指定しない場合、このメソッドは
- 空白
- 改行
- タブ
- 垂直タブ
- 復帰
- 改ページ
を自動で削除してくれます。以下に実例を書いているので、strip実行前と後で見比べて見ましょう。
''' 削除する文字を指定しない場合'''
# 両端の空白を削除
print(' これは文字列です。 ')
print(' これは文字列です。 '.strip())
# 両端の改行コードを削除
print('\nこれは文字列です。\n')
print('\nこれは文字列です。\n'.strip())
# 両橋のタブコードを削除
print('\tこれは文字列です。\t')
print('\tこれは文字列です。\t'.strip())
# 両端の垂直タブコードを削除
print('\vこれは文字列です。\v')
print('\vこれは文字列です。\v'.strip())
# 両端の復帰コードを削除(ここでは違いは見られないので一行のみ)
print('\rこれは文字列です。\r'.strip())
# 両端の改ページコードを削除(ここでは違いは見られないので一行のみ)
print('\fこれは文字列です。\f'.strip())
# 複合していても一度に削除します。
print(' \n\tこれは文字列です。 \n\v ')
print(' \n\tこれは文字列です。 \n\v '.strip())
このように、strip()の引数を空白にしていると、それぞれ自動で削除されていますね。なおstripメソッドをつかう文字列は、次のコードのように、もちろん変数でも構いません。
''' 文字列変数に対して使う '''
str_a = ' これは文字列です '
str_b = '\nこれは文字列です。\n'
print(str_a)
print(str_a.strip())
print(str_b)
print(str_b.strip())
1.2. Pythonのstripで複数の文字を指定して削除する
strip()の引数に、削除する文字を指定すると、任意の文字を削除することができます。指定する文字は1文字でもいいですし、複数でも構いません。
まずは、次のコードをご覧ください。削除する文字を1文字だけ指定したものです。
''' 削除する文字を指定する'''
# 'a'を削除
print('aaaaaこれは文字列ですaaaaa')
print('aaaaaこれは文字列ですaaaaa'.strip('a'))
# 単語の削除も可能
print('さんまこれは文字列ですさんま')
print('さんまこれは文字列ですさんま'.strip('さんま'))
削除したい不要な文字列が複数ある場合は、次のように書きます。なおstrip()では複数指定する場合、文字の間にカンマは不要ですので覚えておきましょう。
''' stripは複数の削除する文字を同時に指定することができます'''
# 0と1を削除
print('0101これは文字列です0101')
print('0101これは文字列です0101'.strip('0 1')) # 複数指定する場合カンマは不要
# 4つの不要な文字を削除
print('111111.....これは文字列です,,,,,,,,000')
print('111111.....これは文字列です,,,,,,,,000'.strip('1 . , 0'))
# 不要な単語「さんま」「明石家」を削除
print('さんまこれは文字列です明石家')
print('さんまこれは文字列です明石家'.strip('さんま 明石家')) # 単語の削除も可能
''' 文字列変数に対して使う '''
str_a = 'aaaaaこれは文字列ですaaaaa'
str_b = '0101これは文字列です0101'
print(str_a)
print(str_a.strip('a'))
print(str_b)
print(str_b.strip('0 1'))
ただし、削除したい文字を複数指定する場合は注意点があります。次のコードをご覧ください。
''' stripメソッドの注意点 '''
# 予期せぬ文字列が削除される時があります。
print('giant dog.jpg'.strip('.jpeg'))
print('あしんぶんしあし'.strip('あ し'))
最初の例では、削除する文字を’.jpeg’と指定しています。これを時間すると、’giant dog’ からも ‘g’が削除されて’iant do’となってしまいました。stripメソッドは前後の不要な文字列を削除します。このケースでは、strip()には(‘.’ ‘j’ ‘p’ ‘e’ ‘g’)の5文字を指定しています。先頭の文字の’giant’の’g’と、後ろの’dog’ の’g’も削除指定の文字に該当するため、削除してしまうのです。
これはstripメソッドを使う時に起こしがちなミスなので注意しましょう。
2. Pythonのlstripメソッドの使い方
stripメソッドは文字列の両端から不要な文字を削除するものでした。lstripは、’left strip’、つまり文字列の左端の不要な文字を削除します。
次のコードをご覧ください。
''' lstripメソッドは左端だけ削除 '''
print('aaaaaこれは文字列ですaaaaa'.lstrip('a'))
print('0101これは文字列です0101'.lstrip('0 1'))
左側からだけ指定の文字が削除されていますね。
なお、引数を空白にしたときは、stripメソッドと同じく空白、改行\n、タブ\t、垂直タブ\v、復帰\r、改ページ\fを自動で削除してくれます。
3. Pythonのrstripメソッドの使い方
rstripメソッドは’right strip’、つまり文字列の右端の不要な文字を削除してくれます。次のコードをご覧ください。
''' rstripメソッドは右端だけ削除 '''
print('aaaaaこれは文字列ですaaaaa'.rstrip('a'))
print('0101これは文字列です0101'.rstrip('0 1'))
右端からだけ指定の文字が削除されていますね。
もちろん、引数を空白にしたときは、stripメソッド、lstripメソッドと同じく空白、改行\n、タブ\t、垂直タブ\v、復帰\r、改ページ\fを自動で削除してくれます。
4. Pythonのstripとsplitの違いについて
たまにPythonのstripとsplitを混乱される方がいるので蛇足ながら解説しておきます。stripメソッドとsplitメソッドはどちらも文字列メソッドですが全くの別物です。stripメソッドは不要な文字列を削除するものです。splitメソッドは文字列を分割してリスト化するものです。
実際に見てみた方が早いですね。
''' strip()とsplit()は別物'''
str = '\t古池や\n\t蛙飛び込む\n\t水の音\n'
print(str) # 普通に出力
print(str.strip()) # stripメソッド 両端の不要な文字列を削除
print(str.split()) # splitメソッド 文字列を分割してリスト化
splitメソッドについては、『Pythonのsplitメソッドで文字列を分割する方法』で解説していますので、ぜひ併せてご確認ください。
5. まとめ
まず、stripは両端、lstripは左端、rstripは右端の不要な文字列を削除することを覚えておきましょう。
そしてstrip()の引数を空白にした場合は、
- 空白
- 改行
- タブ
- 垂直タブ
- 復帰
- 改ページ
を自動で削除してくれます。これは意外と見落としている人が多いので、しっかり確認しておきましょう。
また、注意点として、記事中で解説したようにstripメソッドは指定した文字に該当する文字列を全て削除してしまうので、意図せぬ結果を出力する場合があります。この点も必ず確認しておきましょう。
コメント