首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有谁知道用python组合regex表达式的好方法吗?

有谁知道用python组合regex表达式的好方法吗?
EN

Stack Overflow用户
提问于 2018-04-11 19:51:45
回答 1查看 32关注 0票数 0

我刚开始编程,但做了广泛的搜索,似乎找不到任何东西让我走上正轨。我有一大串正则表达式,如果可能的话,我需要找到一种方法将它们结合起来。我有的只是数字

例如,我的列表如下所示

代码语言:javascript
运行
复制
832118[0-3]
832118[7-8]
832119[0-1]
832119[4-6]
832119[8-9]
8321206
832120[0-4]
832120[8-9]

我想要的输出如下所示

代码语言:javascript
运行
复制
832118[0-37-8]
832119[0-14-68-9]
832120[0-468-9]

谢谢你能提供的任何提示!

区块报价

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-11 20:04:45

使用defaultdict和这个简单的regex:(\d+)\[(\d+-\d+)\]

如果要匹配Numbers[Numbers-Numbers]以外的格式,则必须更改正则表达式。

代码语言:javascript
运行
复制
import re
from collections import defaultdict
dct = defaultdict(str)
data = ['832118[0-3]', '832118[7-8]', '832119[0-1]', '832119[4-6]', '832119[8-9]', '8321206', '832120[0-4]', '832120[8-9]']
for line in data:
    mtch = re.findall(r"(\d+)\[(\d+-\d+)\]", line)
    if mtch:
        dct[mtch[0][0]] += mtch[0][1]

for i, j in dct.items():
    print(i, '['+ j + ']')

输出:

代码语言:javascript
运行
复制
832118 [0-37-8]
832120 [0-48-9]
832119 [0-14-68-9]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49783425

复制
相关文章

相似问题

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