regex.sub()
正規表現オブジェクト (regexオブジェクト) の regex.sub() を使うと、マッチした文字列を他の文字列で置き換えることができます。たとえば、検索対象文字列にある 2018年 を 平成30 年 に置き換える場合は、2018 年 を表す正規表現オブジェクトを作成し、sub()メソッドの第 1 引数に '平成30 年' を渡します。
# PYTHON_REGEX_SUB
# In[1]
import re
# 検索対象文字列
my_str = '2018年12月30日'
# 2018年にマッチする正規表現オブジェクトを作成
regex = re.compile(r'2018年')
# 2018年を平成30年に置換
s = regex.sub('平成30年', my_str)
print(s)
# 平成30年12月30日
文章中の年月日を表す文字列が「西暦2018年」のようになっている可能性も考慮すると、「(2018|西暦2018)年」という正規表現をつくっておいたほうが良いかもしれません。これは「2018年と「西暦2018年」の両方にマッチする正規表現です。
# In[2]
# 検索対象文字列
my_str = '2018年12月30日\n西暦2018年12月30日'
# 2018年にマッチする正規表現オブジェクトを作成
# フラグにre.Mを指定してマルチラインを設定
regex = re.compile(r'(2018|西暦2018)年', re.M)
# 2018年を平成30年に置換
s = regex.sub('平成30年', my_str)
print(s)
# 平成30年12月30日
# 平成30年12月30日
regex.subn()
正規表現の regex.subn() は置き換えた文字列と置換回数をタプルで返します。次のコードでは、' ' を '' で置き換えることにより、半角スペースを削除します。
# PYTHON_REGEX_SUBN
# In[1]
import re
# 置換対象文字列
my_str = '東京都 豊島区 南池袋 x-y-z あとりえこばと出版'
# 半角スペースにマッチする正規表現オブジェクトを作成
regex = re.compile(r' ')
# 半角スペースを削除
s = regex.subn('', my_str)
print(s)
# ('東京都豊島区南池袋x-y-zあとりえこばと出版', 4)
実行結果をみると、削除されたスペースが 4 個であることがわかります。
regex.split()
正規表現オブジェクトの regex.split() は、マッチした文字のところで文字列を分割してリストで返します。次のサンプルコードでは、住所データを半角スペースのある所で分割します。
# PYTHON_REGEX_SPLIT
# In[1]
import re
# 置換対象文字列
my_str = '大阪府 豊中市 刀根山元町 x-y-z 桃の木ハウス 105号'
# 半角スペースにマッチする正規表現オブジェクトを作成
regex = re.compile(r' ')
# 半角スペースを削除
s = regex.split(my_str)
print(s)
# ['大阪府', '豊中市', '刀根山元町', 'x-y-z', '桃の木ハウス', '105号']
コメントを書く