我正在使用Python 3.我编写了两个程序。通过csv文件循环获取思科交换机的IP地址,登录,运行命令,并将结果输出到单个文本文件。所以我最终得到了许多文本文件......每个开关一个。第二个程序使用xlwt将每个文本文件中的信息写入Excel中自己的工作表。删除两个单词之间的所有字符并用空格替换
主要想法是我需要开发一个显示端口进出服务的报告。一旦我将这些导入到Excel中,我可以编写一些公式来提取我需要的数据。但现在,当我将它导入Excel时,我必须手动删除一些单元格,因为所有内容都不对齐,这是因为名称列中某些单词之间的空格(我正在导入到Excel中作为空间分隔)。我试图用字符串和列表方法(分割,连接,切片等)做一些事情,但我无法得到我想要的。名称列在任何一致的约定中都没有标准化。我注意到,虽然名称实际上可能非常长,但会被截断为一定数量的字符。理想情况下,删除前4行(最上面有空行)和最后一行,然后在端口和状态之间任意删除它(全部删除包括标题的列)。
这是从交换机获取数据后的文件显示方式。
sw1#term length 0 sw1#show interfaces status Port Name Status Vlan Duplex Speed Type Gi0/1 Trunk to switch (a connected 1 a-full a-100 10/100/1000BaseTX Gi0/2 Network augment pe connected 1 a-full a-1000 10/100/1000BaseTX Gi0/3 connected 1 a-full a-1000 10/100/1000BaseTX Gi0/4 connected 1 a-full a-100 10/100/1000BaseTX Gi0/5 notconnect 1 auto auto Not Present Gi0/6 notconnect 1 auto auto Not Present Gi0/7 notconnect 1 auto auto Not Present Gi0/8 notconnect 1 auto auto Not Present Gi0/9 notconnect 1 auto auto Not Present Gi0/10 connected 1 a-full a-100 10/100/1000BaseTX Gi0/11 notconnect 1 auto auto Not Present Gi0/12 connected 1 a-full a-100 10/100/1000BaseTX Gi0/13 disabled 1 auto auto Not Present Gi0/14 disabled 1 auto auto Not Present Gi0/15 disabled 1 auto auto Not Present Gi0/16 disabled 1 auto auto Not Present sw1#logout
最终结果我想在下面。这应该允许行/列结构在导入Excel时保持不变。请注意,所有列信息均以空格分隔。我发现导入为固定宽度或用空格分隔,连续空格作为一个对象进行检查似乎工作得很好。
Port Status Vlan Duplex Speed Type Gi0/1 connected 1 a-full a-100 10/100/1000BaseTX Gi0/2 connected 1 a-full a-1000 10/100/1000BaseTX Gi0/3 connected 1 a-full a-1000 10/100/1000BaseTX Gi0/4 connected 1 a-full a-100 10/100/1000BaseTX Gi0/5 notconnect 1 auto auto Not Present Gi0/6 notconnect 1 auto auto Not Present Gi0/7 notconnect 1 auto auto Not Present Gi0/8 notconnect 1 auto auto Not Present Gi0/9 notconnect 1 auto auto Not Present Gi0/10 connected 1 a-full a-100 10/100/1000BaseTX Gi0/11 notconnect 1 auto auto Not Present Gi0/12 connected 1 a-full a-100 10/100/1000BaseTX Gi0/13 disabled 1 auto auto Not Present Gi0/14 disabled 1 auto auto Not Present Gi0/15 disabled 1 auto auto Not Present Gi0/16 disabled 1 auto auto Not Present
任何指针,将不胜感激。我认为正则表达式可能是有序的,但我需要一些帮助来构建它。我希望这不是太模糊。
除去以前的更新并移动到一个新的线程
后的代码你有这么远。最初的想法是'split()'完全有能力处理这个;跳过索引'0'后的所有内容直到出现“连接|未连接|禁止”字样;之后,一切看起来相当符合我... –