python.findall结果进入readab

2024-05-14 09:56:22 发布

您现在位置:Python中文网/ 问答频道 /正文

需要一些帮助排序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 

Tags: showpolicyctpulroutejulaccountingfindall
2条回答

此代码:

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

从这个模棱两可的问题很难判断这是否是作者想要的。你知道吗

您是否尝试格式化已获得的输出?你知道吗

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]))

相关问题 更多 >

    热门问题