Es klingt wie Sie eine leere Zeile in der Eingabedatei haben. Aus Ihren Kommentaren haben Sie tatsächlich eine nicht leere Zeile, die keine |
Zeichen enthält. In jedem Fall ist es einfach genug, nach einer leeren Ergebniszeile zu suchen.
Versuchen Sie folgendes:
#UNTESTED
nf=open(Output_File,'w+')
with open(Input_File,'read') as f:
for row in f:
Current_line = str(row)
Reformated_line=str(','.join(Current_line.split('|')[1:-1]))
if Reformatted_line:
nf.write(Reformated_line+ "\n")
Andere Anmerkungen:
- Sie
with
konsequent nutzen sollten. Öffnen Sie beide Dateien auf die gleiche Weise.
str(row)
ist ein No-Op. row
ist schon eine str.
str(','.join(...))
ist ähnlich redundant.
open(..., 'read')
ist keine gültige Verwendung des Modus-Parameters zu open()
. Sie sollten r
verwenden oder den Parameter ganz weglassen.
- Ich möchte keine neuen Namen einführen, wenn ich das Format der vorhandenen Daten ändere. Das heißt, ich bevorzuge
row = row.split()
über Reformatted_line = row.split()
.
Hier ist eine Version, die diese und andere Vorschläge enthält:
with open(Input_File) as inf, open(Output_File, 'w+') as outf:
for row in inf:
row = ','.join(row.split('|')[1:-1])
if row:
outf.write(row + "\n")
Asides: Gibt es einen Grund, warum Sie mit 'with' öffnen eine Datei, die andere aber nicht? Warum nennst du 'str (row)'? Da 'row' bereits ein' str' ist, scheint dies nichts Nützliches zu bewirken. –