在列表理解中修剪数组元素

时间:2018-04-18 14:57:12

标签: python windows python-2.7 fixed-width

Splitting a string by list of indices修改代码,将固定宽度数据加载到Excel工作表中,但不了解如何修剪[List Comprehension]函数最后一行中每个数组项的结果。< / p>

注意 - 除非打印行被注释掉,否则数据不会加载到Excel工作表中。

from itertools import tee, izip_longest
import openpyxl

def fixed_reader(df, data_start, data_end, indices, ws):
    with open(df, 'rb') as f:
        for line in range(0, data_start): next(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
fixed_reader('FixedWidth.dat', 3, 7, [0,1,6,8], ws)
wb.save('FixedWidth.xlsx')

FixedWidth.dat

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

1 个答案:

答案 0 :(得分:1)

您可以使用.strip()修剪每个字符串两端的空格,或使用.strip(' ')修剪空格。

line = line.rstrip('\r\n')
ws.append([line[i:j].strip(' ') for i,j in izip_longest(start, end)])