Python 如何返回具有注册表模式组名的键和值匹配顺序的元组或2个列表?

Python 如何返回具有注册表模式组名的键和值匹配顺序的元组或2个列表?,python,regex,regex-group,Python,Regex,Regex Group,我正在尝试使用从re.compile中使用groupdict()创建的2个dict创建修复的路径 其思想是将错误路径中的值与正确dict的同名值进行交换。 但是,由于它们不在捕获的组顺序中,我无法将结果字符串重建为正确的路径,因为这些值不符合路径所需的顺序 我希望这是有意义的,我使用python才几个月,所以我可能忽略了显而易见的问题 # for k, v in pat_list.iteritems(): # pat = re.compile(v) # m = p

我正在尝试使用从re.compile中使用groupdict()创建的2个dict创建修复的路径

其思想是将错误路径中的值与正确dict的同名值进行交换。 但是,由于它们不在捕获的组顺序中,我无法将结果字符串重建为正确的路径,因为这些值不符合路径所需的顺序

我希望这是有意义的,我使用python才几个月,所以我可能忽略了显而易见的问题

    # for k, v in pat_list.iteritems():
    #   pat = re.compile(v)
    #   m = pat.match(Path)
    #   if m:
    #       mgd = m.groups(0)
    #       pp (mgd)

这给出了正确的值顺序,groupdict()创建了正确的k,v对,但顺序错误。

您可能会使用类似的方法:

pat = re.compile(r"(?P<FULL>(?P<to_ext>(?:(?P<path_file_type>(?P<path_episode>(?P<path_client>[A-Z]:[\\/](?P<client_name>[a-zA-z0-1]*))[\\/](?P<episode_format>[a-zA-z0-9]*))[\\/](?P<root_folder>[a-zA-Z0-9]*)[\\/])(?P<file_type>[a-zA-Z0-9]*)[\\/](?P<path_folder>[a-zA-Z0-9]*[_,\-]\d*[_-]?\d*)[\\/](?P<base_name>(?P<episode>[a-zA-Z0-9]*)(?P<scene_split>[_,\-])(?P<scene>\d*)(?P<shot_split>[_-])(?P<shot>\d*)(?P<version_split>[_,\-a-zA-Z]*)(?P<version>[0-9]*))))[\.](?P<ext>[a-zA-Z0-9]*))")
s = r"T:\Grimm\Grimm_EPS321\Comps\Fusion\G321_08_010\G321_08_010_v02.comp"
mat = pat.match(s)
result = []

for i in range(1, pat.groups):
    name = list(pat.groupindex.keys())[list(pat.groupindex.values()).index(i)]
    cap = res.group(i)
    result.append([name, cap])

从从

获取的dict中的值获取密钥您是否尝试过在iter中为k,v(排序(pat_list.iteritems()):?
names = []
captures = []

for i in range(1, pat.groups):
    name = list(pat.groupindex.keys())[list(pat.groupindex.values()).index(i)]
    cap = res.group(i)
    names.append(name)
    captures.append(cap)