当我试图回答这个问题: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'}
查找所有匹配项的结果如下:
>>> re.findall('(\w+)%\s(\w+)', data)
>>> [('34', 'passed'), ('23', 'failed'), ('46', 'deferred')]
有没有办法改变/指定使 re.findall 返回 的组的顺序?
[('passed', '34'), ('failed', '23'), ('deferred', '46')]
请澄清,问题是:
是否可能指定re.findall函数返回的组的顺序或重新排序组的顺序?
我使用上面的示例创建了一个字典,以提供更改顺序的原因/用例(将键作为值,将值作为键)
进一步澄清:
为了处理更大更复杂的正则表达式中的组,您可以命名组,但是仅在进行re.search或re.match时才能访问这些名称。据我所知,findall中的组具有固定的索引返回到元组中,问题是是否有人知道如何修改那些索引。这将有助于使组的处理更加轻松和直观。
findall
返回的组的顺序,但是很容易在事后重新排序它们,就像我在我的第二个答案中展示的那样:https://dev59.com/sV8e5IYBdhLWcg3wja75#25629693 - Dan Lenski