首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Regex从字符串中检测收集格式化数字和非格式化数字

如何使用Regex从字符串中检测收集格式化数字和非格式化数字
EN

Stack Overflow用户
提问于 2020-04-25 08:12:02
回答 1查看 32关注 0票数 0

我正在用Python开发一个项目,它将任何给定的字符串规范化为纯纯文本。问题是,我的输入非常不规则,有些数字是格式化的(值、价格),而另一些数字则没有格式化(年份、年龄)。我试图收集所有这些文件,而不关心是否使用下面的脚本进行格式化。

代码语言:javascript
复制
def get_nums(line):
   formatted_nums = re.compile('\d{1,3}[,.]\d{1,3}')
   nums = re.compile('\d+')
   formatted_nums_data = rm_repetitions(formatted_nums.findall(line))
   nums_data = rm_repetitions(nums.findall(line))
   return formatted_nums_data + nums_data

然而,考虑到这句话:劳斯莱斯汽车公司(Royce Cars Inc. .)表示,预计1990年美国汽车销量将保持稳定在1,200辆左右。它向我提供了以下结果:

代码语言:javascript
复制
[u'1,200', u'1', u'200', u'1990']

尽管如此,我想要的输出是:

代码语言:javascript
复制
[u'1,200', u'1990']

这类问题有什么解决办法吗?提前谢谢你

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-25 08:35:31

您不希望出现一个或多个事件,这就是+给您的

您想要4次这样的{4}

代码语言:javascript
复制
import re

def get_nums(line):
   formatted_nums = re.compile('\d{1,3}[,.]\d{1,3}')
   nums = re.compile('\d{4}') # CHANGE
   # using SET to remove duplicates
   formatted_nums_data = list(set(formatted_nums.findall(line)))
   nums_data = list(set(nums.findall(line)))
   return formatted_nums_data + nums_data

line = "Rolls-Royce Motor Cars Inc. said it expects its U.S. sales to remain steady at about 1,200 cars in 1990"   
print(get_nums (line))
代码语言:javascript
复制
['1,200', '1990']
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61422758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档