お役立ち

【Python】文字列の削除

  • このエントリーをはてなブックマークに追加

stripを利用する

文字列の削除となると良くstripメソッドが紹介されます。
使い方は下記の通りです。


>>> s = 'aiueo'
>>> s = s.strip('a')
>>> print(s)
iueo
>>> s = '  \t   hoge\r\n     \t '
>>> s = s.strip()// 引数を省略すると空白・改行・タブが削除
>>> print(s)
hoge

stripで削除されるのは両端のみ

しかし、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で左側は削除できない
aiueo
>>> print(s.lstrip('o'))// lstripで右側は削除できない
aiueo

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
  • このエントリーをはてなブックマークに追加