2017-04-03 5 views
0

Ich habe ein großes '|' getrennte Datei. Es gibt bestimmte Linien, die in zwei Teile zerbrochen und in die nächste Zeile verschoben wurden. Gegeben, ich kenne die Anzahl der Trennzeichen in jeder Zeile (sagen wir 100), wie ich das an die erste Hälfte angehängt habe, um den ganzen richtigen Datensatz zu erhalten.Rollup Zeilen durch Delimiter Zählung über Python

Ich habe die unten versucht, aber es funktioniert nicht wie erwartet:

with open(file_name) as f: 
    for line in f: 
     lis.append(line) 

file_object=open(out_file,'w+') 
for x in range(len(lis)): 
    line=lis[x] 
    delim_count=line.count('|') 
    if(delim_count==100): 
     file_object.write(line) 
    elif(delim_count<100): 
     `file_object.write(lis[x]+lis[x+1])   
    x=x+1 
file_object.close() 

Antwort

1

Ihr Code fast es tat.

Sie können einen Akkumulator verwenden, der Zeilen akkumuliert, bis die Anzahl der Trennzeichen 100 ist. Beachten Sie, dass Sie das Zeichen \ n am Ende der Zeilen entfernen müssen.

Hier ist eine verbesserte Version des Codes:

with open(file_name, 'r') as fin: 
    with open(out_file, 'w+') as fout: 
     accum_line = '' 
     for line in fin: 
      accum_line += line.rstrip('\n') # remove '\n' here 
      if accum_line.count('|') == 100: 
       fout.write(accum_line + '\n') # add '\n' here 
       accum_line = '' 
Verwandte Themen