Python - 如何查找短语中的所有数字?

时间:2016-03-17 20:34:47

标签: python regex numbers word

我想知道如何检测短语中的所有数字。例如

math_str = "one times one plus sin(one hundred fifty three) minus three billion"
getNumberWords(math_str) #Returns one, one, one hundred fifty three, three billion

是否有正则表达式模式?

1 个答案:

答案 0 :(得分:1)

没有捷径,因为python不懂英语或人类语言,你需要有一个被认为是数字的单词列表

math_str = "one times one plus sin(one hundred fifty three) minus three billion"
allowed = ['one', 'three', 'fifty', 'hundred', 'thousand', 'million', 'billion']

def getNumberWords(math_str):
    math_str = math_str.replace('(', ' ')
    math_str = math_str.replace(')', ' ')
    math_str = math_str.split()

    return [word for word in math_str if word in allowed]

print(getNumberWords(math_str))

在这个示例中,我只是输入了获得结果所需的单词数,但是如果您希望结果准确,那么您将填写很多单词(数字)