如何使用pythonltk将字符串中的数字转换成单词?

2024-04-20 09:51:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试编写一个函数,该函数将:

  • 以字符串作为输入
  • 检查里面有没有数字
  • 将数字转换成单词

例如,“hello5123”将被转换为“hellofive,一百二十三”。在

我的密码是: 从自然语言库导入非索引字 从nltk.tokenize导入word_tokenize 从num2words导入num2words

def conv_mytext(text, **keyword_parameters):
    if('convert_digits' in keyword_parameters):
    word_tokens = word_tokenize(text)
    for w in word_tokens:
        if int(w):
            word_tokens[w] = num2words(w)
        else:
            continue
    return text

我得到了这个错误:

^{pr2}$

我做错什么了?在


Tags: 函数字符串textinif数字单词keyword
1条回答
网友
1楼 · 发布于 2024-04-20 09:51:41

这里的主要问题是int()不是一个谓词函数-您希望它像isInt()一样工作,而实际上它将尝试将传递给int的值转换为

“Hello”,当然序列中的第一个标记不能转换为int,因此,调用int("Hello")会产生一个ValueError,表明“Hello”可能不是以10为基数的数字。在

如果一个字符串是类似于数字的,您应该看看其他的测试方法。最简单的方法是在try/catch块中执行转换,这样就可以识别ValueError,并在发现字符串不是数字后安全地继续。在

另一种方法是使用正则表达式来标识字符串是否类似于数字。正则表达式^\d+$适用于整数。如果字符串与该表达式匹配,则字符串仅由数字组成,并且可以传递给num2words。在

相关问题 更多 >