# stripを利用する
## stripで削除されるのは両端のみ
文字列の削除となると良くstripメソッドが紹介されます。 使い方は下記の通りです。
```python
s = 'aiueo'
s = s.strip('a')
print(s) # iueo
s = ' \t hoge\r\n \t '
s = s.strip() # 引数を省略すると空白・改行・タブが削除
print(s) # hoge
しかし、strip関数で文字列が削除されるのは両端のみです。 この点に触れている記事が少なく、勘違いして使っていたこともありました。 なので、この点には注意して利用しましょう。
s = 'aiueo'
s = s.strip('u') #両端じゃないところは削除されない
print(s) # aiueo
s = ' \t Hello World!\r\n \t '
s = s.strip()
print(s) # Hello World!
片側だけ削除したい場合はrstrip,lstrip
s = 'aiueo'
print(s.lstrip('a')) # iueo
print(s.rstrip('o')) # aiue
print(s.rstrip('a')) # rstripで左側は削除できない
print(s.lstrip('o')) # lstripで右側は削除できない
replaceを利用する方法
stripは両端の文字しか削除はしてくれません。 なので、文字列全体から特定の文字列を削除したい場合は、 replaceで削除したい文字列を”に置き換えるのが一般的です。
s = 'hoge hoge hoge'
s = s.replace(' ','')
print(s) # hogehogehoge
translateを利用する
いくつかの値をまとめて削除するとき replaceを複数書くことで削除できますが冗長です。 そこで、translateを利用することで 複数種類の文字列を削除するスマートな書き方ができます。 次のコードでは、空白・タブ・改行コードを削除します。
transtable = str.maketrans({
' ':'',
'\t':'',
'\n':'',
'\r':''})
s = 'ho ge \t hog e \n hoge\r\nhoge '
s = s.translate(transtable)
print(s) # hogehogehogehoge
正規表現を利用する
正規表現で削除?
「数字が4つ並ぶところ」や「アルファベットが連続するところ」など ある特定のパターンの部分を削除したいことがあります。 そんなときは、 正規表現という方法を用いてそのパターンを定義します。 その正規表現をもとに削除することができます。
正規表現で空白・タブ・改行コードを削除
空白・タブ・改行コードを削除するコードを正規表現を利用して書いてみます。
import re
pattern = '(\ |\t|\n|\r)*'
s = 'ho ge \t hog e \n hoge\r\nhoge '
s = re.sub(pattern, '',s)
print(s) # hogehogehogehoge
“`
コメント