您是否可以删除随机的逗号字符串并替换为一个以导出为CSV的逗号

时间:2019-06-27 11:33:26

标签: python-3.x replace

我正在使用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。我可能是您见过的时间最长的人,因为我对程序设计很陌生:)

2 个答案:

答案 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

说明:

  1. re库允许使用正则表达式进行解析 文本。因此,第一行将其导入。
  2. 第二行指定要提取任何内容的正则表达式 那不是逗号,而只是一个规范。不会 实际进行提取
  3. 第三行打开输出文件,其中“ w”表示我们 可以写。下一行打开输入文件。该文件是 名称为“ newfile”的引用
  4. 第四行一次从输入文件中读取每一行。
  5. 第五行是一次将非逗号分开的操作 输入的一部分,将它们重新连接在一起,并以逗号分隔,并且 将结果字符串写入输出文件。
  6. 最后一行关闭输出文件。