Wie kann ich in python verwenden, um zu konvertieren eine Feste Breite txt-Datei in csv?

Ich online recherchiert, aber konnte keine Antwort finden auf meine Frage. Ich brauche konvertieren von txt-Datei in eine csv. Ich habe herausgefunden, wie dies zu tun mit delimeters, aber die txt-Datei hat keine delimeters oder Header, so muss ich Feste Breite zahlen. Die Datei hat Millionen von Datensätzen. Die breiten für die Spalten 10, 60, 60, 60, 30, 2, 3, 6, 9, 5, 6, 12, 12, 5, 3, 12, 12, 5, 3.

Meine zwei Herausforderungen:
1. Zum konvertieren der Datei in csv mit den festen breiten, die oben aufgeführt sind.
2. Zum einfügen der Kopfzeilen.

Den Daten sieht wie folgt aus:

0000000626ISOCKE BBBB ZZZZZ TW DARTMOUTH 10 FDSAF DR DARTMOUTH CASN 7H44DR SAAB -11.111111 22.2222222 000 -33.333333 44.4444444 000 
0000000627ISOCKE FFFF TTTTT TW HALIFAX 3367 FDSAF RD HALIFAX CASN 8C5ASE SAAB -55.555555 66.6666666 000 -77.777777 88.8888888 000 
0000000628ISOCKE RE CHARLOTTETOWN 449 UYRNT ECSARW RD CHARLOTTETOWN-CAPE CSE8HR SAAB -99.999999 11.1111111 000 -22.222222 33.3333333 000 

Wieder, alles, was ich in der Lage gewesen ist, konvertieren Sie die Datei in das csv -, aber nicht im richtigen format, mit diesem code:

import csv
rf = open(r'C:\Users\...New Folder\practice.txt', 'r') #input file handle
wf = open(r'C:\Users\...New Folder\Book1.csv','w') #output file handle
writer = csv.writer(wf)

for row in rf.readlines():
    writer.writerow(row.split())
rf.close() # close input file handle
wf.close() # close output file handle
  • in deiner for-Schleife, warum nicht Sie schreiben Sie einfach for row in rf statt for row in rf.readlines()
  • Das ist, wie ich sah, dass der code, den ich online gefunden. Würde das einen Unterschied machen zu meinem problem, obwohl?
  • über readlines: Halten Sie eine Liste von Millionen von strings im Speicher, wenn Sie nicht brauchen, um wahrscheinlich zu erzeugen andere Probleme.
InformationsquelleAutor talpol00 | 2012-04-02
Schreibe einen Kommentar