我想在一个字符串中识别所有类型的数字。
例子:

a = 'I 0.34 -345 3/4 3% want to  get -0.34 2018-09 all numbers'

结果:
['I', '_num', '_num', '_num', '_num', 'want', 'to', 'get', '_num', '_num', 'all', 'numbers']

这是一个NLP项目,我想知道是否有更好的方法来得到结果。
我可以列出所有类型然后使用正则表达式,但它并不简洁,有人有好主意吗?

最佳答案

这里的列表理解非常简洁:

a = 'I 0.34 -345 3/4 3% want to  get -0.34 2018-09 all numbers'
pattern = re.compile('\d')
result = ['_num' if re.search(pattern, word) else word for word in re.compile(' +').split(a)]

如果输入(want to get)中的双空格是一个输入错误,则可以单独拆分一个空格,而不必使用正则表达式:
pattern = re.compile('\d')
result = ['_num' if re.search(pattern, word) else word for word in a.split(' ')]

结果:
['I', '_num', '_num', '_num', '_num', 'want', 'to', 'get', '_num', '_num', 'all', 'numbers']

关于python - Python:从字符串中提取数字,例如日期,分数,百分比等,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52324439/

10-08 22:32
查看更多