Python 在句子中用数字代替单词

Python 在句子中用数字代替单词,python,Python,我有一些句子,其中数字有时被写成单词,例如: He takes classes of yoga two times per week. 我需要用数字替换文字形式的数字: He takes classes of yoga 2 times per week. 如果是,他每周上两次瑜伽课。,应该保持原样 我发现了一个名为word2number的库,它将单词转换为数字()。但是我怎样才能更新一个句子,让他每周上2次瑜伽课。 from word2number import w2n w2n.word_

我有一些句子,其中数字有时被写成单词,例如:

He takes classes of yoga two times per week.
我需要用数字替换文字形式的数字:

He takes classes of yoga 2 times per week.
如果是
,他每周上两次瑜伽课。
,应该保持原样

我发现了一个名为
word2number
的库,它将单词转换为数字()。但是我怎样才能更新一个句子,让他每周上2次瑜伽课。

from word2number import w2n

w2n.word_to_num('He takes classes of yoga two times per week.')
# output: 2

这应该可以处理任意多字数。它不会处理句子结尾的标点符号,比如“野兽的数字是六百六十六”。你可能想先去掉标点符号。我想在句子的中间也会出现逗号,

def translate(sentence):
    result = []
    partial = []
    for word in sentence.split():
        partial.append(word)
        num = w2n.word_to_num(' '.join(partial))
        # If this worked, then go try to suck up another word.
        if num:
            continue
        # If there's more than one word in partial, then all but the
        # last make a successful number.
        if len(partial) > 1:
            result.append( w2n.word_to_num(' '.join(partial{[:-1]) ))
        result.append( word )
        partial = []
    return ' '.join(result)

@00:是的,但我应该更换什么?我如何知道
two
确切地指的是
2
?链接堆栈溢出帖子中的解决方案已被移植到关闭我的问题并提供“答案”链接的人:请仔细阅读问题。我问如何替换句子中的单词并返回句子。我没有问如何用数字替换任何孤立的单词。@Fluxy仔细阅读链接的答案:)在link@CoryKramer如果“他每周上两次瑜伽课”会怎么样。没有解决办法,因为你无法判断他们想要25英镑还是205英镑。大多数人会写“二十五”,但不可否认的是,不会写更多的数字。