用配置填充列表

时间:2019-06-18 13:09:23

标签: python-3.x

在一个公共类别下的两个不同子类别下,我有一个称为user-db的公共值。需要支持来相应地区分列表值。

读取文件并匹配特定的正则表达式键,并按如下所示将匹配值附加到列表中

import re

rx_dict = {
    'group_interface'  : re.compile(r'\s{16}group-interface\s(?P<grp_int_name>".*")'),
    'group_int_sap' : re.compile(r'\s{20}sap\s(?P<sap_name>lag\-\d{1,3}\:\d{1,4}\.\d{1,4})'),
    'group_int_pppoe' : re.compile(r'\s{20}(?P<PPPoE>pppoe)'),
    'group_int_dhcp'  : re.compile(r'\s{20}(?P<DHCP>dhcp)'),
    'user_db' : re.compile(r'user-db\s"(?P<USERDB>\w+\-?\w+\-?\w+)"')

}

rx_dict = {
    'group_interface'  : re.compile(r'\s{16}group-interface\s(?P<grp_int_name>".*")'),
    'group_int_sap' : re.compile(r'\s{20}sap\s(?P<sap_name>lag\-\d{1,3}\:\d{1,4}\.\d{1,4})'),
    'group_int_pppoe' : re.compile(r'\s{20}(?P<PPPoE>pppoe)'),
    'group_int_dhcp'  : re.compile(r'\s{20}(?P<DHCP>dhcp)'),
    'user_db' : re.compile(r'user-db\s"(?P<USERDB>\w+\-?\w+\-?\w+)"')

}


with open('1_vprn_320400001_config.txt', 'r') as file_object:
        line = file_object.readline()
        while line:
            key , match = _parse_line(line)
            if key == 'group_interface':
                grp_int_name = match.group('grp_int_name')
            if key == 'group_int_sap':
                grp_int_sap = match.group('sap_name')
                grp_int = {
                    'grp_int_name' : grp_int_name,
                    'grp_int_sap' : grp_int_sap
                    }
                group_interface.append(grp_int)
            if key == 'user_db':
                dhcp = match.group('USERDB')
                grp_int_dhcp = {
                        'grp_int_name' : grp_int_name,
                        'DHCP_DB' : dhcp
                        }
                group_interface_dhcp.append(grp_int_dhcp)
            line = file_object.readline()

输出应显示如下。

[{'grp_int_name': '"MOHIDEEN"', 'DHCP_DB': 'LUDB-BB-1'}, {'grp_int_name': '"MOHIDEEN"', 'DHCP_DB': 'LUDB-BB-1'}]

相反,它显示如下

[{'grp_int_name': '"MOHIDEEN"', 'DHCP_DB': LUDB-BB-1, 'PPPOE_DB': 'LUDB-BB-1'}]

0 个答案:

没有答案