我正在尝试编写一个函数:
例如," Hello 5,123"将被转换为"你好五,一百二十三"。
我的代码是: 来自nltk.corpus导入的停用词 来自nltk.tokenize导入word_tokenize 来自num2words import num2words
LINEITEM_PUBLIC(PUB_L_ORDERKEY)
我收到此错误:
CUSTOMER_ORDER_PUBLIC
我做错了什么?
答案 0 :(得分:1)
这里的主要问题是int()
不是谓词函数 - 当它实际上会尝试转换值时,您希望它像isInt()
一样工作你传递给了一个int。
" Hello",您的序列中的第一个令牌当然无法转换为int,因此,调用int("Hello")
会生成ValueError
,表示&# 34;你好"可能不是10号基数。
如果字符串类似数字,您应该查看其他测试方法。最简单的方法是在try / catch块中执行转换,允许您识别ValueError并在它注意到字符串不是数字时安全地继续。
另一种方法是使用正则表达式来识别字符串是否为数字。正则表达式^\d+$
适用于整数。如果字符串与该表达式匹配,则该字符串仅由数字组成,并且可以传递给num2words
。