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!