在一个公共类别下的两个不同子类别下,我有一个称为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'}]