我想写一个文本规范化,以及需要处理的基本情况之一是转像3.14到three point one four或three point fourteen.
我目前使用的模式\$?\d+(\.\d+)?%?有nltk.regexp_tokenize,我认为应该处理数以及货币和百分比.但是,目前,类似的东西$23.50被完美处理(它解析['$23.50']),但3.14正在解析['3', '14']- 小数点被删除.
我已经尝试\d+.\d+在我的正则表达式中添加一个单独的模式,但这没有帮助(并且我的当前模式不应该已经匹配了吗?)
编辑2:我也刚刚发现该%部件似乎也没有正常工作 - 20%只返回['20'].我觉得我的正则表达式肯定有问题,但我已经在Pythex中测试了它看起来很好吗?
编辑:这是我的代码.
import nltk
import re
pattern = r'''(?x) # set flag to allow verbose regexps
([A-Z]\.)+ # abbreviations, e.g. U.S.A.
| \w+([-']\w+)* # words w/ optional internal hyphens/apostrophe
| \$?\d+(\.\d+)?%? # numbers, incl. currency and percentages
| [+/\-@&*] # special …Run Code Online (Sandbox Code Playgroud)