我正在使用Netmiko从思科交换机和路由器提取一些数据。我想将这些数据放入电子表格中。例如show cdp neighbor将给我字符串,其中包含随机空白 端口名称状态VLAN双工速度类型 ET0 / 0已连接1自动自动未知 ET0 / 1已连接1自动自动未知 ET0 / 2连接的路由自动自动未知 Et0 / 3已连接1自动自动未知
我以为我可以将其删除并替换为,但是我得到了
端口、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 Et0 / 0 、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 ,未知 Et0 / 1 、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 ,未知 Et0 / 2 、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 Et0 / 3 、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、 ,未知
像上面那样提取数据的任何方法。理想情况下,直接进入excel(单元格和行)中的结构化表格,或执行我所做的操作,然后用一个替换重复,以便我可以导出到CSV,然后导入到Excel。我可能是您见过的时间最长的人,因为我对程序设计很陌生:)
答案 0 :(得分:0)
我希望我不要误会你。要将重复的逗号转换为一个逗号,只需使用字符串s运行此代码:
while ",," ins s:
s = s.replace(",,", ",")
答案 1 :(得分:0)
我会使用更灵活的正则表达式匹配。您可以根据自己的需要进行调整。我将数据放在列表中进行测试,但是您一次可以处理1行。
这是文件(称为mydata.txt)
Et0/0,,,,,,,,,,,,,,,,,,,,,,,,connected,,,,1,,,,,,,,,,,,auto,,,auto,unknown
Et0/1,,,,,,,,,,,,,,,,,,,,,,,,connected,,,,1,,,,,,,,,,,,auto,,,auto,unknown
Et0/2,,,,,,,,,,,,,,,,,,,,,,,,connected,,,,routed,,,,,,,auto,,,auto,unknown
Et0/3,,,,,,,,,,,,,,,,,,,,,,,,connected,,,,1,,,,,,,,,,,,auto,,,auto,unknown
这里是读取结果并将结果写入csv文件(mydata.csv)的方法
import re
_re = re.compile('([^,]+)+')
newfile = open(r'mydata.csv', 'w')
with open(r'mydata.txt') as data:
for line in data.readlines():
newfile.write(','.join(f for f in _re.findall(line)))
newfile.close()
这是输出
Et0/0,connected,1,auto,auto,unknown
Et0/1,connected,1,auto,auto,unknown
Et0/2,connected,routed,auto,auto,unknown
Et0/3,connected,1,auto,auto,unknown
说明: