Python Regex - 字典里面的字典

时间:2013-02-18 07:46:25

标签: python regex dictionary

我想根据这些数据创建字典:

输入

1234STUD

输出

{'student': {'id': '1234', 'name': 'STUD'}}

这是我对正则表达式的处理方式:

import re
rule = '(?P<student>((?P<id>\d{4})(?P<name>\w{4})))'
text = '1234STUD'
m = re.search(rule, text)
m.groupdict()

目前的输出不是我想要的):

{'id': '1234', 'name': 'STUD', 'student': '1234STUD'}

任何人都可以建议我应该做些什么来获得我想要的输出?

注意:

这只是我项目的一个例子,数据比这更复杂,所以如果我以上述方式做任何事情(使用m.groupdict())并且它会产生我想要的东西?

2 个答案:

答案 0 :(得分:2)

您无法单独使用regex创建嵌套字典。您需要对数据进行后处理以创建嵌套结构。

import re
rule = '(?P<id>\d{4})(?P<name>\w{4})'
text = '1234STUD'
m = re.search(rule, text)
result = {'student': m.groupdict()}

答案 1 :(得分:1)

你应该创建一个函数来构建你想要的dict并返回它。这应该使用预编译的正则表达式模式来提高速度。

import re

_pat_student_parser = re.compile(r'((?P<id>\d{4})(?P<name>\w{4}))')

def nested_dict_from_text(text):
    m = re.search(_pat_student_parser, text)
    if not m:
        raise ValueError
    d = m.groupdict()
    return { "student": d }

result = nested_dict_from_text('1234STUD')
print(result)