需要帮助在python中对.findall的结果进行排序,以便以某种可读格式转换结果。 我有一个片段给我输出
[('Jul 11 11:25:51', 'ul 11 11:25:51', '', '', ''), ('', '', 'u2k', '', ''), ('', '', '', 'CBDCS2.CTP', ''), ('Jul 11 11:25:52', 'ul 11 11:25:52', '', '', ''), ('', '', 'u2k', '', ''), ('', '', '', 'WNDCS2.WTC', ''), ('Jul 11 11:25:53', 'ul 11 11:25:53', '', '', ''), ('', '', '', '', 'interface GigabitEthernet 2/0/44 '), ('', '', 'lqin', '', ''), ('', '', '', 'CASWNTHS151', ''), ('Jul 11 11:25:55', 'ul 11 11:25:55', '', '', ''), ('', '', 'u2k', '', ''), ('', '', '', 'asuspmk02', ''), ('Jul 11 11:25:55', 'ul 11 11:25:55', '', '', ''), ('', '', 'u2k', '', ''), ('', '', '', 'h_asuspmk01', ''), ('Jul 11 11:26:13', 'ul 11 11:26:13', '', '', ''), ('', '', '', 'cis1tow', ''), ('Jul 11 11:26:32', 'ul 11 11:26:32', '', '', ''), ('', '', '', '', 'show rpl route-policy RP-AKAMAI-LDV-OUT attachpoints '), ('', '', 'lyang', '', ''), ('', '', '', 'bgnzldv02', ''), ('Jul 11 11:26:32', 'ul 11 11:26:32', '', '', ''), ('', '', '', '', 'switchport voice vlan 462 '), ('', '', 'lqin', '', ''), ('', '', '', 'CASWNTHS151', ''), ('Jul 11 11:26:38', 'ul 11 11:26:38', '', '', ''), ('', '', '', '', 'copy running-config startup-config '), ('', '', 'lqin', '', ''), ('', '', '', 'CASWNTHS151', ''), ('Jul 11 11:26:57', 'ul 11 11:26:57', '', '', ''), ('', '', 'lqin', '', ''), ('', '', '', 'CASWNTHS151', '')]
需要输出
Jul 11 11:25:51 ul 11 11:25:51 u2k CBDCS2.CTP
Jul 11 11:25:51 ul 11 11:25:51 u2k WNDCS2.WTC
等等
以下代码段
p = re.compile(r'([J](\S+\W+\S+\W+\S+))|User=(\S\S+),|NetworkDeviceName=(\S\S+),|CmdAV=([^\<]*)')
results = re.findall(p,output)
file4.write(str(results))
输入如下
Jul 11 11:58:37 CSCOacs_TACACS_Accounting 0034182898 1 0 2016-07-11 TACACS+ Accounting with Command, ACSVersion=acs-5.6.0.22-B.225, ConfigVersionId=18, Device IP Address=10.125.89.1, CmdSet=[ CmdAV=show rpl route-policy RP-GGC-CTP-OUT attachpoints <cr> ], RequestLatency=0, Type=Accounting, Privilege-Level=0, Service=Login, User=lyang, Port=/dev/vty10, Remote-AVPair=priv-lvl=0, AcctRequest-Flags=Stop, Service-Argument=shell, AcsSessionID=imau03ftc/256670213/33719073, NetworkDeviceName=u2k NetworkDeviceGroups=All Devices:All
答案 0 :(得分:0)
此代码:
line = []
for d in results:
if d[0] != '':
if len(line)>0:
print " ".join(line)
line = []
for dx in d:
if dx != '':
line.append( dx )
if len(line)>0:
print " ".join(line)
当results
如问题顶部所示时,产生此输出:
Jul 11 11:25:51 ul 11 11:25:51 u2k CBDCS2.CTP
Jul 11 11:25:52 ul 11 11:25:52 u2k WNDCS2.WTC
Jul 11 11:25:53 ul 11 11:25:53 interface GigabitEthernet 2/0/44 lqin CASWNTHS151
Jul 11 11:25:55 ul 11 11:25:55 u2k asuspmk02
Jul 11 11:25:55 ul 11 11:25:55 u2k h_asuspmk01
Jul 11 11:26:13 ul 11 11:26:13 cis1tow
Jul 11 11:26:32 ul 11 11:26:32 show rpl route-policy RP-AKAMAI-LDV-OUT attachpoints lyang bgnzldv02
Jul 11 11:26:32 ul 11 11:26:32 switchport voice vlan 462 lqin CASWNTHS151
Jul 11 11:26:38 ul 11 11:26:38 copy running-config startup-config lqin CASWNTHS151
Jul 11 11:26:57 ul 11 11:26:57 lqin CASWNTHS151
这是否是作者想要的,很难从模棱两可的问题中辨别出来。
答案 1 :(得分:-1)
您是否尝试过格式化输出?
p = re.compile(r'([J](\S+\W+\S+\W+\S+))|User=(\S\S+),|NetworkDeviceName=(\S\S+),|CmdAV=([^\<]*)')
results = re.findall(p,output)
file4.write('\n'.join([' '.join([str(i) for i in row]) for row in results]))