Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich Zahlenwörter in Python in ganze Zahlen umwandeln?

Wie kann ich Zahlenwörter in Python in ganze Zahlen umwandeln?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-20 18:44:20860Durchsuche

How Can I Convert Number Words to Integers in Python?

Zahlenwörter in ganze Zahlen umwandeln

Oft besteht die Notwendigkeit, als Text ausgedrückte Zahlenwörter umzuwandeln (z. B. „eins“, „zwei“) ") in ihre entsprechenden ganzzahligen Werte.

Lösung:

Um diese Konvertierung zu erleichtern, wird eine Python-Funktion namens text2int eingeführt, die ein umfassendes Wörterbuch von Zahlenwörtern verwendet ( numwords), um Textdarstellungen ganzen Zahlen zuzuordnen. Hier ist die Implementierung:

def text2int(textnum, numwords={}):
    if not numwords:
        # Initialize the numwords dictionary only on the first call
        units = [
            "zero", "one", "two", "three", "four", "five", "six", "seven", "eight",
            "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen",
            "sixteen", "seventeen", "eighteen", "nineteen",
        ]

        tens = ["", "", "twenty", "thirty", "forty", "fifty", "sixty", "seventy", "eighty", "ninety"]

        scales = ["hundred", "thousand", "million", "billion", "trillion"]

        numwords["and"] = (1, 0)
        for idx, word in enumerate(units):    numwords[word] = (1, idx)
        for idx, word in enumerate(tens):     numwords[word] = (1, idx * 10)
        for idx, word in enumerate(scales):   numwords[word] = (10 ** (idx * 3 or 2), 0)

    current = result = 0
    for word in textnum.split():
        if word not in numwords:
            raise Exception("Illegal word: " + word)

        scale, increment = numwords[word]
        current = current * scale + increment
        if scale > 100:
            result += current
            current = 0

    return result + current

Beispiel:

Betrachten Sie die folgende Eingabe: „sieben Milliarden einhundert Millionen einunddreißigtausenddreihundertsiebenunddreißig“

print text2int("seven billion one hundred million thirty one thousand three hundred thirty seven")  # 7100031337

Das obige ist der detaillierte Inhalt vonWie kann ich Zahlenwörter in Python in ganze Zahlen umwandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn