Conversion de katakana en voyelle kana [python]

Aperçu

J'ai créé une fonction qui renvoie une voyelle lorsqu'une chaîne de caractères katakana est entrée, telle que "Konichiha-> Onia".

Règles de conversion

Laissez "n" et "tsu" tels quels (Exemple: Runpapa-> Unaa) Rendre "-" (son long) identique à la voyelle précédente (exemple: cola-> ora) Si le kana immédiatement précédent est "to" ou "do", "u" est considéré comme un caractère et traité de la même manière que les majuscules (exemple: Ducchi-> Uui, Uaa-> Uaa) "Ya", "e" et "yo" sont traités comme un caractère lorsque le kana immédiatement précédent est dans le i-dan, et sont traités comme un caractère dans les autres cas. (Exemple: Catatsu-> Aau, Kee-> E) Si le kana immédiatement précédent est i-dan, et s'il est "te" ou "de", il est considéré comme un kana, et dans d'autres cas, il est traité de la même manière qu'un capital (par exemple tulle-> u, dewar-> ua ) Si le kana immédiatement précédent est U-dan, "ヮ", "a", "e" et "o" sont considérés comme un kana avec lui, et dans d'autres cas, ils sont traités de la même manière que les lettres majuscules. (Exemple: Way-> Aei) Si le kana immédiatement précédent est U-dan et "te" et "de", "i" est considéré comme un kana avec lui, et dans d'autres cas, il est traité de la même manière que les majuscules (exemple: thé au citron-> eonii, yair-> Ouais) Laissez les personnages autres que Katakana tels quels.

environnement

Il a été confirmé qu'il fonctionnait sur Google Colaboratory (à compter du 27 mars 2020) et macOS Catalina, Python 3.8.0.

code

def kana2vowel(text):
    #Liste de conversion supérieure et inférieure
    large_tone = {
        'UNE' :'UNE', 'je' :'je', 'C' :'C', 'ré' :'ré', 'Oh' :'Oh',
        'U': 'C', 'Vu': 'C',
        'Puissance' :'UNE', 'Ki' :'je', 'Ku' :'C', 'Ke' :'ré', 'Ko' :'Oh',
        'Un service' :'UNE', 'Shi' :'je', 'Su' :'C', 'Se' :'ré', 'Alors' :'Oh',
        'Ta' :'UNE', 'Ji' :'je', 'Tsu' :'C', 'Te' :'ré', 'À' :'Oh',
        'N / a' :'UNE', 'ré' :'je', 'Nu' :'C', 'Ne' :'ré', 'Non' :'Oh',
        'C' :'UNE', 'salut' :'je', 'Fu' :'C', 'F' :'ré', 'E' :'Oh',
        'Ma' :'UNE', 'Mi' :'je', 'Mu' :'C', 'Moi' :'ré', 'Mo' :'Oh',
        'Ya' :'UNE', 'Yu' :'C', 'Yo' :'Oh',
        'La' :'UNE', 'Li' :'je', 'Le' :'C', 'Les' :'ré', 'B' :'Oh',
        'sensationnel' :'UNE', 'Wo' :'Oh', 'Vers le bas' :'Vers le bas', 'Vu' :'C',
        'Géorgie' :'UNE', 'Gi' :'je', 'Gu' :'C', 'Ge' :'ré', 'Aller' :'Oh',
        'le' :'UNE', 'le' :'je', 'Zu' :'C', 'Ze' :'ré', 'Zo' :'Oh',
        'Da' :'UNE', 'Di' :'je', 'Zu' :'C', 'De' :'ré', 'Faire' :'Oh',
        'Ba' :'UNE', 'Bi' :'je', 'Bu' :'C', 'Être' :'ré', 'Bo' :'Oh',
        'Pennsylvanie' :'UNE', 'Pi' :'je', 'Pu' :'C', 'Pe' :'ré', 'Po' :'Oh'
    }

    #À/Faire+'U'Pour c
    for k in 'Faire':
        while k+'U' in text:
            text = text.replace(k+'U','C')
    #Te/De+je/je/Convertir en c
    for k in 'Tedde':
        for k2,v in zip('Ju','Iu'):
            while k+k2 in text:
                text = text.replace(k+k2,v)

    #Convertir les lettres majuscules et u en voyelles
    text = list(text)
    for i, v in enumerate(text):
        if v in large_tone:
            text[i] = large_tone[v]
    text = ''.join(text)

    #Convertir Wu en Wu
    while 'Wu' in text:
        text = text.replace('Wu','U')

    #C+ヮ/UNE/je/E/Convertir o en voyelle
    for k,v in zip('ヮ yeo','Aieo'):
        text = text.replace('C'+k,v)
    
    #E/Bien/Convertir en bon
    for k in 'Ouais':
        while k+'-' in text:
            text = text.replace(k+'-',k+'je')

    #je/je+Turbocompresseur/Yu/E/Convertir yo en voyelle
    for k,v in zip('Nyayo','Aueo'):
        text = text.replace('je'+k, v).replace('je'+k, v)
    
    #Convertir les minuscules restantes en voyelle
    for k,v in zip('Eyayo','Aiaioauo'):
        text = text.replace(k,v)
    
    #-Convertir (son long) en voyelle
    for k in 'a-I-U-E-O':
        while k+'-' in text:
            text = text.replace(k+'-',k+k)
    
    return text

Recommended Posts

Conversion de katakana en voyelle kana [python]
Convertir de Markdown en HTML en Python
Changements de Python 3.0 à Python 3.5
Changements de Python 2 à Python 3.0
Convertir les kanji en kana
[Python] Conversion de DICOM en PNG ou CSV
[python] Convertir la date en chaîne
Publier de Python vers Slack
[Python] Convertir la liste en Pandas [Pandas]
Flirter de PHP à Python
Convertir le projet Scratch en Python
[Python] Convertir Shift_JIS en UTF-8
Passer de python2.7 à python3.6 (centos7)
Connectez-vous à sqlite depuis python
Convertir le code python 3.x en python 2.x
Conversion de Pandas DataFrame en System.Data.DataTable à l'aide de Python pour .NET
Convertir Markdown en PDF en Python
[Lambda] [Python] Publier sur Twitter depuis Lambda!
Workflow pour convertir une formule (image) en python
Convertir la liste en DataFrame avec python
Python> liste> Convertir une double liste en une seule liste
Conversion de pdf en txt 2 [pyocr]
Connectez-vous à la base de données utf8mb4 à partir de python
Python (de la première fois à l'exécution)
Publier une image de Python sur Tumblr
[Python] Convertit les nombres naturels en nombres ordinaux
Convertir décimal en n-aire [python]
Comment accéder à wikipedia depuis python
Python pour passer d'une autre langue
Comment convertir .mgz en .nii.gz
Python> tuple> Convertir un double tuple en un seul tuple
N'a pas changé de Python 2 à 3
Mettre à jour Mac Python de 2 à 3
[Python] Conversion de NIFITI en PNG (exemple COVID-19 [nouveau virus corona] CT)
[Python] Comment convertir un fichier db en csv
[Python] Simulation de fluide: de linéaire à non linéaire
De Python à l'utilisation de MeCab (et CaboCha)
Convertir un mémo à la fois avec Python 2to3
Convertir Python> séquence de deux valeurs en dictionnaire
[Python] Comment convertir une liste bidimensionnelle en liste unidimensionnelle
Comment mettre à jour Google Sheets à partir de Python
[Python] Convertit les délimiteurs de fichier csv en délimiteurs de tabulation
Convertir de PDF en CSV avec pdfplumber
Convertir un fichier psd en png en Python
Convertir des données Excel en JSON avec python
Convertir Hiragana en Romaji avec Python (bêta)
Je veux utiliser jar de python
Notification push du serveur Python vers Android
Convertissez des données FX 1 minute en données 5 minutes avec Python
Connexion de python à MySQL sur CentOS 6.4
python> Convertir le tuple en liste> aList = list (pi_tuple)
Portage et modification du solveur de doublets de python2 vers python3.
Comment accéder à RDS depuis Lambda (python)
Convertir le type de date Python au format RFC822
Python> Numéros de sortie de 1 à 100, 501 à 600> Pour csv
Convertir des nombres chinois en nombres arabes avec Python
[Amazon Linux] Passage de la série Python 2 à la série Python 3
Explication API pour toucher mastodonte de python