Номер порта «искажается» при импорте CSV в Excel 2010Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Номер порта «искажается» при импорте CSV в Excel 2010

Сообщение Anonymous »

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

Я использую 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)
...и измените на диалект='singlequote', CSV будет правильно анализироваться при просмотре в текстовом редакторе. Затем я импортирую в Excel, и, хотя там все правильно, конечно, есть одинарные кавычки.

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

Есть предложения?

Подробнее здесь: https://stackoverflow.com/questions/323 ... excel-2010
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»