4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

カタカナから母音のカナに変換する【python】

Last updated at Posted at 2020-03-27

#概要
「コンニチハ->オンイイア」みたいに、カタカナ文字列を入力したら、その母音を返す関数を作りました。
#変換ルール
「ン」「ッ」はそのままにする(例:ルンパッパ -> ウンアッア)
「ー」(長音)は直前の母音と同一にする(例:コーラ -> オオア)
「ゥ」は直前のカナが「ト」「ド」の場合、それと合わせて一つの文字とみなし、大文字と同じく扱う(例:ドゥッキ -> ウッイ、ゥアア -> ウアア)
「ャ」「ェ」「ョ」は直前がカナがイ段の場合、直前のカナと合わせて一つの文字とみなし、それ以外の場合は大文字と同じく扱う。(例:キャタツ -> アアウ、キェェ -> エエ)
「ュ」は直前のカナがイ段、「テ」「デ」の場合、それと合わせて一つのカナとみなし、それ以外の場合は大文字と同じく扱う(例:チュール -> ウウウ、デュワー -> ウアア)
「ヮ」「ァ」「ェ」「ォ」は直前のカナがウ段の場合、それと合わせて一つのカナとみなし、それ以外の場合は大文字と同じく扱う。(例:ウェーイ -> エエイ)
「ィ」は直前のカナがウ段、「テ」「デ」の場合、それと合わせて一つのカナとみなし、それ以外の場合は大文字と同じく扱う(例:レモンティー -> エオンイイ、ィエア -> イエア)
カタカナ以外の文字はそのままにする。
#環境
Google Colaboratory(2020年3月27日時点)およびmacOS Catalina, Python3.8.0での実行を確認しています。
#コード

def kana2vowel(text):
    #大文字とゥの変換リスト
    large_tone = {
        '' :'', '' :'', '' :'', '' :'', '' :'',
        '': '', '': '',
        '' :'', '' :'', '' :'', '' :'', '' :'',
        '' :'', '' :'', '' :'', '' :'', '' :'',
        '' :'', '' :'', '' :'', '' :'', '' :'',
        '' :'', '' :'', '' :'', '' :'', '' :'',
        '' :'', '' :'', '' :'', '' :'', '' :'',
        '' :'', '' :'', '' :'', '' :'', '' :'',
        '' :'', '' :'', '' :'',
        '' :'', '' :'', '' :'', '' :'', '' :'',
        '' :'', '' :'', '' :'', '' :'',
        '' :'', '' :'', '' :'', '' :'', '' :'',
        '' :'', '' :'', '' :'', '' :'', '' :'',
        '' :'', '' :'', '' :'', '' :'', '' :'',
        '' :'', '' :'', '' :'', '' :'', '' :'',
        '' :'', '' :'', '' :'', '' :'', '' :''
    }

    #ト/ド+'ゥ'をウに変換
    for k in 'トド':
        while k+'' in text:
            text = text.replace(k+'','')
    #テ/デ+ィ/ュをイ/ウに変換
    for k in 'テデ':
        for k2,v in zip('ィュ','イウ'):
            while k+k2 in text:
                text = text.replace(k+k2,v)

    #大文字とゥを母音に変換
    text = list(text)
    for i, v in enumerate(text):
        if v in large_tone:
            text[i] = large_tone[v]
    text = ''.join(text)

    #ウーをウウに変換
    while 'ウー' in text:
        text = text.replace('ウー','ウウ')

    #ウ+ヮ/ァ/ィ/ェ/ォを母音に変換
    for k,v in zip('ヮァィェォ','アアイエオ'):
        text = text.replace(''+k,v)
    
    #イー/ィーをイイ/ィイに変換
    for k in 'イィ':
        while k+'' in text:
            text = text.replace(k+'',k+'')

    #イ/ィ+ャ/ュ/ェ/ョを母音に変換
    for k,v in zip('ャュェョ','アウエオ'):
        text = text.replace(''+k, v).replace(''+k, v)
    
    #残った小文字を母音に変換
    for k,v in zip('ヮァィェォャュョ','アアイエオアウオ'):
        text = text.replace(k,v)
    
    #ー(長音)を母音に変換する
    for k in 'アイウエオ':
        while k+'' in text:
            text = text.replace(k+'',k+k)
    
    return text
4
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?