Konvertieren Sie chinesische Zahlen mit Python in arabische Zahlen

Als ich es gegoogelt habe, gab es nicht viele Beispiele und es war nur alt (Python2-Version), also habe ich es gemacht. (Behoben, weil es ein Fehler war)

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 Millionen Milliarden Billionen\d]+')
re_kunit = re.compile(r'[Hunderttausend]|\d+')
re_manshin = re.compile(r'[100 Milliarden Billionen]|[^100 Milliarden Billionen]+')

TRANSUNIT = {'Zehn': 10,
             'Abholen': 10,
             'hundert': 100,
             'tausend': 1000}
TRANSMANS = {'Zehntausend': 10000,
             'Milliarde': 100000000,
             'Billion': 1000000000000}


def kansuji2arabic(kstring: str, sep=False):
    """Konvertieren Sie chinesische Zahlen in arabische Zahlen"""

    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

Tatsächlich wird jede chinesische oder arabische Zahl jetzt auf eine arabische Zahl mit halber Breite normalisiert.

   kansuji2arabic('Das Budget für das Geschäftsjahr 2007 beläuft sich auf 135 Millionen, 164 Yen', True)
   'Haushaltsbetrag 2015 1,035,001,164 Yen'

Recommended Posts

Konvertieren Sie chinesische Zahlen mit Python in arabische Zahlen
Konvertieren Sie die Liste mit Python in DataFrame
Konvertieren Sie Memos sofort mit Python 2to3
Konvertieren Sie Excel-Daten mit Python in JSON
Beispiel für die Wavelet-Konvertierung von Bildern in Python
Konvertieren Sie 202003 bis 2020-03 mit Pandas
Konvertieren Sie PDF in Bilder (JPEG / PNG) mit Python
Konvertieren Sie PDFs mit Python in Massenbilder
Konvertieren Sie Windows-Epochenwerte mit Python in das Datum
Konvertieren Sie die Zeichenfolge mit Python in ein zeichenweises Listenformat
Stellen Sie mit Python eine Verbindung zu BigQuery her
So konvertieren / wiederherstellen Sie einen String mit [] in Python
Konvertieren Sie numpy int64 in python int
[Python] Liste in Pandas konvertieren [Pandas]
Stellen Sie mit Python eine Verbindung zu Wikipedia her
Post to Slack mit Python 3
Konvertieren Sie das Bild in .zip mit Python in PDF
Konvertieren Sie das Scratch-Projekt in Python
[Python] Konvertieren Sie Shift_JIS in UTF-8
PyInstaller-Memorandum Konvertieren Sie Python [.py] in [.exe] mit 2 Zeilen
Schalten Sie Python mit Alternativen auf 2.7 um
Schreiben Sie mit Python in csv
Konvertieren Sie Python 3.x-Code in Python 2.x.
So konvertieren Sie mit Python [Anwendung] von einem Array in ein Wörterbuch
Konvertieren Sie Bilder mit PIL (Python Imaging Library) in Sepia.
Konvertieren Sie Videos mit ffmpeg + python + opencv in Schwarzweiß
Konvertieren Sie .ipynb in .html (mit BatchFile)
Link, um mit Python zu beginnen
Konvertieren Sie Markdown in Python in PDF
Schön dich mit Python zu treffen
Versuchen Sie, Facebook mit Python zu betreiben
Ausgabe in eine CSV-Datei mit Python
Workflow zum Konvertieren der Formel (Bild) in Python
MP3 → WAV-Konvertierung mit Python
Konvertieren Sie Sätze mit gensim in Vektoren
Schwanzrekursion mit Python2 durchführen
Erste Schritte mit Python
Python> Liste> Doppelte Liste in einfache Liste konvertieren
Was tun mit PYTHON Release?
[Python] Konvertiert natürliche Zahlen in Ordnungszahlen
So berechnen Sie das Datum mit Python
Konvertieren Sie die Dezimalzahl in n-ary [Python]
Konvertieren Sie PDF in Image mit ImageMagick
Mit Python 3 einfach auf Twitter posten
Ich möchte mit Python debuggen
Python> Tupel> Konvertiert doppeltes Tupel in einzelnes Tupel
Konvertieren Sie in eine Zeichenfolge, während Sie die Standardausgabe mit dem Python-Unterprozess ausgeben
Aktiviert, um PNG mit Pillow of Python in JPG zu konvertieren
Konvertieren Sie in Python usw. geschriebene Dateien in PDF mit Syntax-Hervorhebung
[Python] So konvertieren Sie eine Datenbankdatei in CSV
Versuchen Sie, Farbfilme mit Python zu reproduzieren
Ändern Sie die Python 64-Bit-Umgebung mit Anaconda in eine 32-Bit-Umgebung
Englische Spracherkennung mit Python [Rede zu Text]
HTML-Mail mit Bild zum Senden mit Python
Konvertieren Sie Python> Zwei-Wert-Sequenz in Wörterbuch
Python nur mit Hallo, Welten zu erinnern