[Python]アクセント符号を消す処理のメモ

Pythonでアクセント符号の付いた文字をアルファベットへ置き換えをしたときのメモです。

アクセント符号は母音のみ

ドイツ語アルファベット、ウムラウトや
ラテン文字を扱う時に使われるアキュートアクセントなどの
アルファベットの上に記号がついた文字を英語のアルファベットにします。

調べてみるとアクセント符号が付くのは母音のみで良かった
すべてのアルファベットにアクセント符号あるんかと思ってた。

import re
def accent(text):
text_a = re.sub(r'à|â', "a", text)
text_i = re.sub(r'ï|î', "i", text_a)
text_u = re.sub(r'û|ù', "u", text_i)
text_e = re.sub(r'è|é|ê|ë', "e", text_u)
text_o = re.sub(r'Ô', "o", text_e)
text_A = re.sub(r'À|Â', "A", text_o)
text_I = re.sub(r'Ï|Î', "I", text_A)
text_U = re.sub(r'Û|Ù', "U", text_I)
text_E = re.sub(r'È|É|Ê|Ë', "E", text_U)
text_O = re.sub(r'Ô', "O", text_E)
return text_O

result = accent("À,Â,Ï,Î,Û,Ù,È,É,Ê,Ë,Ô,à,â,ï,î,û,ù,è,é,ê,ë,ô")
print(result)

[結果] A,A,I,I,U,U,E,E,E,E,O,a,a,i,i,u,u,e,e,e,e,o

上記の場合は.replaceを使うよりre.subを使ったほうが良い場合なのではと思いました。
呼び名が複数あるものを統一するときに便利かと思います。

ex)

result = re.sub(r'御座候|太鼓焼き|回転焼き|大判焼き' ,"今川焼き", text)

置き換えパターンを変数にしたい

r”の囲いの中は全ての文字がエスケープされて変数が入れられませんので以下の感じで

pattern = re.compile(r"%s" % "御座候|太鼓焼き|回転焼き|大判焼き")
result = re.sub(pattern ,"今川焼き", text)

※近鉄百貨店がある地域なので御座候派です。

シェアする

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