python - Trim Array Element i Liste Begrebet

Indlæg af Hanne Mølgaard Plasc

Problem



Tilpasset kode fra Splitting en streng efter liste over indekser for at indlæse data med fast bredde i Excel-ark, men forstår ikke, hvordan man kan trimme resultaterne for hvert arrayelement i den sidste linje i funktionen [[Listeforståelse]]. [7]


Bemærk - data er ikke indlæst i Excel-arket, medmindre printlinjen kommenteres.


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('
') for i,j in izip\_longest(start, end)])      # <<<<<
            ws.append([line[i:j].rstrip('
') 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

Bedste reference


Du kan trimme whitespace fra begge ender af hver streng ved hjælp af .strip(), eller brug .strip(' ') til bare at trimme mellemrum.


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