Я использую CiscoConfParse для анализа нескольких файлов и пишу CSV-файл, в котором информация разделена на отдельные файлы. клетки. Моя проблема в том, что номера портов выглядят нормально, если они начинаются с «0», то есть «0/1», но в противном случае csv.writer неправильно анализирует номер порта. Например, «1/1» получается «Jan-00» при использовании диалекта = «excel», как показано ниже.
Вот мой код на данный момент:
Код: Выделить всё
import os
import re
from ciscoconfparse import CiscoConfParse
import csv
def main():
path="K:\\Temp work\\120\\New\\Configs\\Working\\" # insert (\\) the path to the directory of interest
for path, dirs, files in os.walk(os.path.abspath(path)):
for f in os.listdir(path):
file_path = os.path.join(path, f)
out_file = 'PC.csv' # change to the name of the file to be created
fo = open(out_file, "ab")
fWriter = csv.writer(fo, dialect='excel')
fWriter.writerow([f])
with open(file_path, "r"):
parse = CiscoConfParse(file_path)
vlanList = parse.find_blocks("(?i)^interface [Pp]")
for line in vlanList:
lod = re.split(r'\s*',line)
writer = csv.writer(fo, delimiter=",", dialect='excel')
writer.writerow(lod)
fo.close()
if __name__=='__main__':
main()
Код: Выделить всё
csv.register_dialect('singlequote', quotechar="'", quoting=csv.QUOTE_ALL)
К сожалению, на данном этапе мне не нужны одинарные кавычки. Я выбрал все и отформатировал как текст, затем заменил символ кавычки на «ничего», и одинарные кавычки ушли, но Excel затем меняет поля на поле даты, и я возвращаюсь к тому, с чего начал. Я, конечно, мог бы удалить кавычки, пока они еще находятся в CSV (текстовом) файле, но когда они импортируются в Excel - даже если я импортирую вручную и указываю, что поля являются текстовыми, Excel все равно переопределит мое форматирование и сделает его датой. (Примечание: я уже пробовал отключить автозамену в Excel)
Есть предложения?
Подробнее здесь: https://stackoverflow.com/questions/323 ... excel-2010