「カ゛」のように、カタカナの濁点だけで1文字になっているテキストを、結合して「ガ」に変換する方法です。
import re import unicodedata def convert_dakuten(chars): if not type(chars) == str: pass else: chars = re.sub(r'\u309B','\u3099',chars) chars = re.sub(r'\u309C','\u309A',chars) return unicodedata.normalize('NFC',chars) print(convert_dakuten('カ゛')) # ガ
「カ゛」はUnicodeで表記すると、\u30AB\u309B
となります。
一方、「ガ」は\u30AC
または\u30AB\u3099
の2通りで表すことができます。
(\u30AC
は「合成済み文字」、\u30AB\u3099
は「結合文字列」と言います。)
つまり、文字の後に\u3099
をつけるとつけると濁点になるので、
1文字の濁点「゛」部分を\u3099
に置換することで「ガ」にすることができます。
さらに、unicodedeta.normalize
でNFC
を指定することで、合成済み文字に変換することができます。
同様に、半濁点は\u309C
を\u309A
に変換します。