如何使用Python NLTK将字符串中的数字转换为单词?

时间:2017-04-17 00:55:40

标签: python nlp nltk tokenize

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

  • 将字符串作为输入
  • 检查是否有任何数字
  • 将数字转换为单词

例如," Hello 5,123"将被转换为"你好五,一百二十三"。

我的代码是:     来自nltk.corpus导入的停用词     来自nltk.tokenize导入word_tokenize     来自num2words import num2words

LINEITEM_PUBLIC(PUB_L_ORDERKEY)

我收到此错误:

CUSTOMER_ORDER_PUBLIC

我做错了什么?

1 个答案:

答案 0 :(得分:1)

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

" Hello",您的序列中的第一个令牌当然无法转换为int,因此,调用int("Hello")会生成ValueError,表示&# 34;你好"可能不是10号基数。

如果字符串类似数字,您应该查看其他测试方法。最简单的方法是在try / catch块中执行转换,允许您识别ValueError并在它注意到字符串不是数字时安全地继续。

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