Номер порта 'mangle' при импорте CSV в Excel 2010

Обновление: теперь я вижу, что CSV Writer правильно анализирует номера портов, даже с использованием dialect='excel'. Не уверен, что я видел раньше, но он явно не делал это раньше. Я должен считать это подозрительным, пока не доказано обратное. Во всяком случае, я открыт для идей, чтобы попробовать...

Я использую CiscoConfParse для анализа нескольких файлов и записи файла CSV с информацией, разделенной на отдельные ячейки. Моя проблема в том, что номера портов выглядят нормально, если они начинаются с "0", то есть с "0/1", но csv.writer неправильно анализирует номер порта. Например, "1/1" выходит "Jan-00" при использовании dialect = "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)

... и измените на dialect='singlequote', CSV анализируется правильно при просмотре в текстовом редакторе. Затем я импортирую в Excel, и, хотя все там правильно, он, конечно, имеет одинарные кавычки.

К сожалению, я не хочу одинарные кавычки на данный момент. Я выделил все и отформатировал как текст, затем заменил символ кавычки на "ничто", и одиночные кавычки остались, но Excel затем изменил поля на поле даты, и я вернулся к тому, с чего начал. Я мог бы, конечно, удалить кавычки, оставаясь в текстовом файле CSV, но когда он импортирован в Excel - даже если я вручную импортирую и укажу, что поля являются текстовыми, Excel все равно отменит мое форматирование и сделает его датой. (Примечание: я уже пытался отключить автозамену в Excel)

Какие-либо предложения?

0 ответов

Другие вопросы по тегам