Convertir des nombres chinois en nombres arabes avec Python

Quand je l'ai googlé, il n'y avait pas beaucoup d'échantillons et c'était juste vieux (version Python2), donc je l'ai fait. (Corrigé car c'était un bug)

python


import re

tt_ksuji = str.maketrans('1 2 3 4 5 6 7 8 90 Ichi 2', '1234567890123')

re_suji = re.compile(r'[10 millions de milliards de milliards\d]+')
re_kunit = re.compile(r'[Cent mille]|\d+')
re_manshin = re.compile(r'[100 milliards de milliards]|[^100 milliards de milliards]+')

TRANSUNIT = {'Dix': 10,
             'Ramasser': 10,
             'cent': 100,
             'mille': 1000}
TRANSMANS = {'Dix mille': 10000,
             'Milliard': 100000000,
             'Mille milliards': 1000000000000}


def kansuji2arabic(kstring: str, sep=False):
    """Convertir des nombres chinois en nombres arabes"""

    def _transvalue(sj: str, re_obj=re_kunit, transdic=TRANSUNIT):
        unit = 1
        result = 0
        for piece in reversed(re_obj.findall(sj)):
            if piece in transdic:
                if unit > 1:
                    result += unit
                unit = transdic[piece]
            else:
                val = int(piece) if piece.isdecimal() else _transvalue(piece)
                result += val * unit
                unit = 1

        if unit > 1:
            result += unit

        return result

    transuji = kstring.translate(tt_ksuji)
    for suji in sorted(set(re_suji.findall(transuji)), key=lambda s: len(s),
                           reverse=True):
        if not suji.isdecimal():
            arabic = _transvalue(suji, re_manshin, TRANSMANS)
            arabic = '{:,}'.format(arabic) if sep else str(arabic)
            transuji = transuji.replace(suji, arabic)
        elif sep and len(suji) > 3:
            transuji = transuji.replace(suji, '{:,}'.format(int(suji)))

    return transuji

En fait, tout nombre chinois ou arabe est désormais normalisé en un nombre arabe demi-largeur.

   kansuji2arabic('Montant du budget de l'exercice 2007 135 millions, 164 yens', True)
   'Budget 2015 montant 1,035,001,164 yens'

Recommended Posts

Convertir des nombres chinois en nombres arabes avec Python
Convertir la liste en DataFrame avec python
Convertir un mémo à la fois avec Python 2to3
Convertir des données Excel en JSON avec python
Convertissez des données FX 1 minute en données 5 minutes avec Python
Exemple de conversion en ondelettes d'images en Python
Convertir 202003 en 2020-03 avec les pandas
Convertir un PDF en image (JPEG / PNG) avec Python
Convertissez des PDF en images en masse avec Python
Convertir les valeurs d'époque Windows à ce jour avec python
Convertir une chaîne au format de liste caractère par caractère avec python
Connectez-vous à BigQuery avec Python
Comment convertir / restaurer une chaîne avec [] en python
Convertir numpy int64 en python int
[Python] Convertir la liste en Pandas [Pandas]
Connectez-vous à Wikipedia avec Python
Publiez sur Slack avec Python 3
Convertissez l'image au format .zip en PDF avec Python
Convertir le projet Scratch en Python
[Python] Convertir Shift_JIS en UTF-8
Mémorandum PyInstaller Convertit Python [.py] en [.exe] avec 2 lignes
Basculer python vers 2.7 avec des alternatives
Écrire en csv avec Python
Convertir le code python 3.x en python 2.x
Comment convertir un tableau en dictionnaire avec Python [Application]
Convertir des images en sépia avec PIL (Python Imaging Library)
Convertir une vidéo en noir et blanc avec ffmpeg + python + opencv
Convertir .ipynb en .html (avec BatchFile)
Lien pour commencer avec python
Convertir Markdown en PDF en Python
Ravi de vous rencontrer avec python
Essayez d'exploiter Facebook avec Python
Sortie vers un fichier csv avec Python
Workflow pour convertir une formule (image) en python
Conversion MP3 → WAV avec Python
Convertir des phrases en vecteurs avec gensim
Pour faire une récursion avec Python2
Comment démarrer avec Python
Python> liste> Convertir une double liste en une seule liste
Que faire avec la sortie de PYTHON?
[Python] Convertit les nombres naturels en nombres ordinaux
Comment calculer la date avec python
Convertir décimal en n-aire [python]
Convertir un PDF en image avec ImageMagick
Publiez facilement sur Twitter avec Python 3
Je veux déboguer avec Python
Python> tuple> Convertir un double tuple en un seul tuple
Convertir en chaîne lors de la sortie de la sortie standard avec le sous-processus Python
Activé pour convertir PNG en JPG avec Pillow of Python
Convertir des fichiers écrits en python, etc. en pdf avec la coloration syntaxique
[Python] Comment convertir un fichier db en csv
Essayez de reproduire un film couleur avec Python
Changer l'environnement Python 64 bits en environnement 32 bits avec Anaconda
Reconnaissance vocale en anglais avec python [speech to text]
mail html avec image à envoyer avec python
Convertir Python> séquence de deux valeurs en dictionnaire
python à retenir uniquement avec bonjour, mondes