Maison > développement back-end > Tutoriel Python > Comment puis-je convertir des mots numériques en nombres entiers en Python ?

Comment puis-je convertir des mots numériques en nombres entiers en Python ?

Patricia Arquette
Libérer: 2024-11-20 18:44:20
original
854 Les gens l'ont consulté

How Can I Convert Number Words to Integers in Python?

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
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal