使用re.findall在正则表达式中捕获命名组
发布时间:2020-12-14 05:58:39 所属栏目:百科 来源:网络整理
导读:当我试图回答这个问题: regex to split %ages and values in python我注意到我必须从findall的结果重新排序组.例如: data = """34% passed 23% failed 46% deferred"""result = {key:value for value,key in re.findall('(w+)%s(w+)',data)}print(resul
当我试图回答这个问题:
regex to split %ages and values in python我注意到我必须从findall的结果重新排序组.例如:
data = """34% passed 23% failed 46% deferred""" result = {key:value for value,key in re.findall('(w+)%s(w+)',data)} print(result) >>> {'failed': '23','passed': '34','deferred': '46'} 这里findall的结果是: >>> re.findall('(w+)%s(w+)',data) >>> [('34','passed'),('23','failed'),('46','deferred')] 有没有办法更改/指定使re.findall返回的组的顺序: [('passed','34'),('failed','23'),('deferred','46')] 只是为了澄清,问题是: 是否可以指定顺序或重新排序组以返回re.findall函数? 我使用上面的示例创建了一个字典,以便在您想要更改顺序时提供原因/用例(将键作为值和值作为键) 进一步澄清: 为了处理更大更复杂的正则表达式中的组,您可以命名组,但只有在执行re.search pr re.match时才能访问这些名称.根据我的阅读,findall对元组中返回的组有一个固定的索引,问题是任何人都知道如何修改这些索引.这将有助于使组的处理更容易和直观. 解决方法
基于对
this comment中OP意图的进一步澄清,取3.
Ashwin是正确的,findall不保留命名的捕获组(例如(?P< name> regex)). data = """34% passed 23% failed 46% deferred""" for m in re.finditer('(?P<percentage>w+)%s(?P<word>w+)',data): print( m.group('percentage'),m.group('word') ) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- JSF2.0实战 - 7、自定义<h:head>
- LearnSwift - 一百天五十个 Swift 项目
- swift – 格式化未知数字的小数位数
- PostgreSQL cluster: partitioning with plproxy (part I)
- gxpt之规范自定义xml配置——xsd显威
- 架构师之xml----xml 和对象互转工具类
- VC中CDC、HDC、pDC区别与联系及相互转换
- objective-c – 如何获取当前在屏幕上的所有窗口的列表,快速
- 实战DDD(Domain-Driven Design领域驱动设计:Evans DDD)
- vb.net – 覆盖DataGridView Shift Space