Conversion de mots numériques en nombres entiers
Souvent, il est nécessaire de convertir des mots numériques exprimés sous forme de texte (par exemple, "un", "deux ") dans leurs valeurs entières correspondantes.
Solution :
Pour faciliter cette conversion, une fonction Python appelée text2int est introduite, qui utilise un dictionnaire complet de mots numériques ( numwords) pour mapper les représentations textuelles en nombres entiers. Voici la mise en œuvre :
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
Exemple :
Considérez l'entrée suivante : "sept milliards cent millions trente et un mille trois cent trente-sept"
print text2int("seven billion one hundred million thirty one thousand three hundred thirty seven") # 7100031337
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!