Есть ли способ чтения файлов фиксированной длины с помощью модуля csv.reader () в Python 2.x - PullRequest
0 голосов
/ 02 мая 2019

У меня есть файл фиксированной длины, например: 0001ABC,DEF1234 Определение файла:

id[1:4]
name[5:11]
phone[12:15]

Мне нужно загрузить эти данные в таблицу.Я попытался использовать модуль CSV и определил фиксированную длину каждого поля.Работает нормально, кроме поля имени.Для поля ИМЯ загружается только значение до ABC.Причина в том, что, поскольку я использую модуль CSV, он обрабатывает 0001ABC как значение и только до этого разбирает.

Я пытался использовать escapechar = ',' при чтении файла, но он удаляет ''из данных.Я также попытался процитировать = csv.QUOTE_ALL, но это тоже не сработало.

with open("xyz.csv") as csvfile:
    readCSV = csv.reader(csvfile)
    writeCSV = open("sample_csv", 'w');
    output = csv.writer(writeCSV, dialect='excel', lineterminator="\n")
    for row in readCSV:
         print(row) # to debug #
         data= str(row[0])
         print(data) # to debug #
         id = data[0:4]
         name = data[5:11]
         phone = data[12:15]
         output.writerow([id,name,phone])
    writeCSV.close()

Вывод команд печати:

row: ['0001ABC','DEF1234'] data: 0001ABC

В идеале, яожидайте увидеть весь набор 0001ABC,DEF1234 в переменной: data.Затем я могу использовать синтаксический анализ, как упомянуто в коде, чтобы разбить его на разные поля.

Не могли бы вы сообщить мне, где я иду не так?

...