「カ゛」のように、カタカナの濁点だけで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に変換します。