Home > Backend Development > Python Tutorial > How Can I Convert Number Words to Integers in Python?

How Can I Convert Number Words to Integers in Python?

Patricia Arquette
Release: 2024-11-20 18:44:20
Original
853 people have browsed it

How Can I Convert Number Words to Integers in Python?

Converting Number Words to Integers

Often, there's a need to convert numerical words expressed as text (e.g., "one", "two") into their corresponding integer values.

Solution:

To facilitate this conversion, a Python function called text2int is introduced, which utilizes a comprehensive dictionary of number words (numwords) to map textual representations to integers. Here's the implementation:

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
Copy after login

Example:

Consider the following input: "seven billion one hundred million thirty one thousand three hundred thirty seven"

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

The above is the detailed content of How Can I Convert Number Words to Integers in Python?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template