Pythonで文字列を置換する(replaceと正規表現のre.subの使い方、小文字と大文字の変換)
Python の文字列は replace で置換します。
x = 'a a a'
y = x.replace('a', 'b')
print(y)
# b b b
replace の最初の引数に「置換する前の文字列」、次の引数に「置換した後の文字列」を指定します。デフォルトでは当てはまる文字列をすべて置換するため、上のようにすべての a が b になっています。
別の例を見てみましょう。
x = 'apple apple google'
y = x.replace('apple', 'facebook')
print(y)
# facebook facebook google
特定の文字列を削除する
特定の文字列をすべて削除するときは replace を使います。置換後の文字列を ''
にします。
x = 'apple apple google'
y = x.replace('apple', '')
print(y)
# google
apple という文字列がすべて消えました。
置換する回数を指定する
Python の replace は置換する回数を三番目の引数で指定します。
x = 'a a a'
y = x.replace('a', 'b', 2)
print(y)
# b b a
2 と指定しているため、a が 2 回だけ置換されました。
正規表現で置換する(パターンに合うものを置換する)
置換したい文字列を直接指定するのでなく、特定のパターンに合う文字列を置換するときは re パッケージを使います。
import re
x = 'iPhone 6s'
y = re.sub(r"[a-z]", "*", x)
print(y)
# *P**** 6*
[a-z]
は「小文字のアルファベット」というパターンです。上のコードでは「小文字のアルファベット」をすべて *
にしています。
大文字のアルファベットを置換したいときはどうでしょうか。
import re
x = 'iPhone 6s'
y = re.sub(r"[A-Z]", "*", x)
print(y)
# i*hone 6s
iPhone の P だけが *
に置換されましたね。
続いて数字だけを置換してみましょう。
import re
x = 'iPhone 6s'
y = re.sub(r"[0-9]", "?", x)
print(y)
# iPhone ?s
数字の 6 だけが ? に置換されました。こうしたパターン・マッチングを正規表現といいますが、正規表現はとても奥深く、やりだすとキリがない分野です。ここでは英数字の置換くらいでとどめます。
半角アルファベットを小文字から大文字に置換する
よくある置換は Python そのものが用意しています。「あ、この置換はきっとよくあるな」と思ったら Python 公式サイトをチェックしてください。最もよくある置換は「大文字→小文字」「小文字→大文字」の置換です。
小文字→大文字
x = 'apple'
y = x.upper()
print(y) # APPLE
大文字→小文字
x = 'NETFLIX'
y = x.lower()
print(y) # netflix
見てわかるように「小文字から大文字」は upper を使います。「大文字から小文字」は lower を使います。この 2 つは頭の片隅に置いておきましょう。