環境設定 数値 文字列 正規表現 リスト タプル 集合 辞書 ループ 関数 クラス データクラス 時間 パス ファイル スクレイピング その他

Pythonで文字列を置換する(replaceと正規表現のre.subの使い方、小文字と大文字の変換)

最終更新日 2023.02.18

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 つは頭の片隅に置いておきましょう。