2017-08-14 10 views
0

Ich habe eine CSV-Datei, die wie folgt aussieht:Python löscht bestimmte Zeilen aus der Datei

CCC, rev, pIndex, no. 
23, 2.5, 0, 4 
34, 4.3, 1, 3 
27, 7.9, 2, 5 
12, 5.7, 3, 7 

wo das dritte Element in jeder Zeile der pIndex genannt wird. Ich habe Code, der jede Zeile einmal repliziert, während die pIndex entsprechend aktualisiert wird. So sieht die Ausgabe wie folgt vor:

CCC, rev, pIndex, no. 
23, 2.5, 0, 4 
23, 2.5, 1, 4 
34, 4.3, 2, 3 
34, 4.3, 3, 3 
27, 7.9, 4, 5 
27, 7.9, 5, 5 
12, 5.7, 6, 7 
12, 5.7, 7, 7 

Im Folgenden ist der Code, der das tut:

with fileinput.input(inplace=True) as f: 
    n = 0 
    for line in f: 
     line = line.rstrip('\n') 
     numbers = line.split(sep = ',') 
     for i in range(2): 
      numbers[3] = n 
      n += 1 
      s = '' 
      for j in numbers: 
       s += str(j) + ',' 
      s = s.rstrip(',') 
      print(s) 

Jetzt habe ich eine Verdoppelung jedes der ersten und letzten Zeile löschen möchten, so dass im Grunde die erste Zeile löschen (nach Kopfzeile, mit pIndex 0) und die letzte Zeile in der Datei. Ich verwende fileinput und versuche, das Ergebnis in derselben Datei zu schreiben. Ich versuchte

result = [] 
result.append(s) 

, die jede Zeile ein separates Array macht. Ich würde dann ein weiteres Array result_all machen, das alle Zeilen (als Arrays) enthalten wird und dann result_all[1:-1] tun, um die erste und letzte Zeile loszuwerden. Aber das scheint nicht gut zu funktionieren.

Jede Hilfe wird sehr geschätzt!

Antwort

0

Die Verwendung kann in Zeilen iterieren und Zeile 1 und letzte Zeile überspringen, müssen Sie jedoch die Anzahl Zeilen kennen.

+0

Danke, aber ich versuche, es für viele Dateien allgemein zu machen, also möchte ich es in der Befehlszeile übergeben wie 'Python script.py filename.csv' –

Verwandte Themen