Member 13788610 Ответов: 0

Используйте openpyxl для загрузки записей файлов данных фиксированной ширины


Пытаюсь прочитать файл фиксированного формата, разбить на записи и загрузить в лист excel. Невозможно обрезать пробелы с концов каждого элемента массива. Проблема в том, что:

с WS.присоединить([строка[я:ж].rstrip('\р\н') для i,j в izip_longest(начало, конец)]) #&ЛТ;&ЛТ;&ЛТ;&ЛТ;&ЛТ;&ЛТ;

Примечание: данные не загружаются в лист excel, если строка печати не закомментирована.


FixedWidth.дат

1C4PJLAB1FW506827
SMT701PD57J348217
1GTEG15X541150523
3GYFNCE39CS56512
1GCGK24N9PE171689
K   U G7FU046394G
1FTEF25NXKNA45683
1G2PF37R8FP298952
JC2UA2127B059 944 5D
JH2PC4080AK380263
1FT7W2BT7FEC79068


Что я уже пробовал:

from __future__ import print_function
from itertools import tee, izip_longest
import openpyxl


def main():

    def fixed_reader(df, data_start, data_end, indices, ws):
        # https://stackoverflow.com/a/10851582/4539999
        # uses from itertools import tee, izip_longest

        with open(df, 'rb') as f:
            # read to start
            for line in range(0, data_start): next(f)
            # for line in f:
            for index, line in enumerate(f):
                if index == data_end: break
                start, end = tee(indices)
                next(end)
                print([line[i:j].rstrip('\r\n') for i,j in izip_longest(start, end)])      # <<<<<
                ws.append([line[i:j].rstrip('\r\n') for i,j in izip_longest(start, end)])  # <<<<<

    wb = openpyxl.Workbook()
    ws = wb.active
    ws['A4'] = ""  # Error - want to start here but starts next row
    fixed_reader('FixedWidth.dat', 3, 7, [0,1,6,8], ws)
    wb.save('Summary.xlsx')


if __name__ == '__main__':
    main()

Patrice T

"Проблема в:"
Какая проблема ?

Member 13788610

Улучшенный вопрос - не знаю, как обрезать элементы массива.

Richard MacCutchan

Первое, что вам нужно сделать, это выяснить, что именно возвращается из вашего звонка в izip_longest.

0 Ответов