【发布时间】:2014-10-27 01:09:30
【问题描述】:
当我试图回答这个问题时: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 对元组中返回的组有一个固定的索引,问题是任何人都知道如何修改这些索引。这将有助于更轻松、更直观地处理组。
【问题讨论】:
-
不可能改变
findall返回的组的顺序,但正如我在第二次展示的那样,事后重新排序很容易答案:stackoverflow.com/a/25629693/20789 -
这就是我的假设,但找不到说明这一点的文档。因此我的问题在这里。