我正在尝试编写一个函数,该函数将:
例如,“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}$我做错什么了?在
这里的主要问题是
int()
不是一个谓词函数-您希望它像isInt()
一样工作,而实际上它将尝试将传递给int的值转换为“Hello”,当然序列中的第一个标记不能转换为int,因此,调用
int("Hello")
会产生一个ValueError
,表明“Hello”可能不是以10为基数的数字。在如果一个字符串是类似于数字的,您应该看看其他的测试方法。最简单的方法是在try/catch块中执行转换,这样就可以识别ValueError,并在发现字符串不是数字后安全地继续。在
另一种方法是使用正则表达式来标识字符串是否类似于数字。正则表达式
^\d+$
适用于整数。如果字符串与该表达式匹配,则字符串仅由数字组成,并且可以传递给num2words
。在相关问题 更多 >
编程相关推荐