2017-09-14 3 views
0

Ich habe die folgende Datei und Code, der absolut gut funktioniert, aber (siehe unten) mit den gleichen Methoden, der zweite Code-Snippet mit der angegebenen Datei, wirft einen Fehler.Anomalie beim Lesen von CSV-Datei Spalte

Arbeits Code

def test(): 
    with open('test.txt','r') as f: 
     reader=csv.reader(f) 
     for row in reader: 
      print(row[0]) #this is column 1 
      answer=input("Answer?>>") 
      if answer==row[1]: #this is column 2 
       print("Yes") 
      else: 
       print("No") 

Dateiinhalt

a,1 
b,2 
c,3 

Korrekte Arbeits Ausgang

>>> test() 
a 
Answer?>>1 
Yes 
b 
Answer?>>2 
Yes 
c 
Answer?>> 

jedoch der folgende Code nicht funktioniert:

def round(): 
    print("===Summary===") 
    with open('eventinfo.txt','r',newline="") as f: 
     reader=csv.reader(f) 
     for row in reader: 
      print(row[0]) 

Dateiinhalt (die zusätzliche Zeile erscheint zwischen den Datensätzen erstellt worden zu sein, während in die Datei zu schreiben)

1,Techhamper,9,9,9,9,9,27 

1,Moosecream,8,8,8,8,8,24 

1,BizTech,6,6,6,6,6,18 

1,Pigacheepot,1,1,1,1,1,3 

2,Techhamper,1,1,1,1,1,3 

2,Moosecream,2,2,2,2,2,6 

Fehler:

print(row[0]) 
IndexError: list index out of range 

Der Code, der in diese Datei schreibt, ist wie folgt:

with open("eventinfo.txt","a") as fo: 
      writer=csv.writer(fo) 
      writer.writerow([round,inventor,i1,i2,i3,i4,i5,totalscore]) 

Für eine Antwort würde ich mich freuen, wenn:

012.351.
  1. Eine Lösung/fix des Fehlers in dem Code, der aus der Datei liest (wie die neue Linie Charakter am effektivsten strippen)

  2. Außerdem, was ist der beste Weg zu oder zu umschreiben hinzuzufügen meine ' Schreibe "Code", um den Dateiinhalt effizienter zu erstellen (um so wie der erste zu sein, der nicht den Zeilenumbruch zwischen jedem Datensatz hat) an erster Stelle. obwohl

    for row in reader: 
        if len(row) > 0: 
         print(row[0]) 
    

    Ich sehe nichts in dem Schreiben von Code, der Leerzeilen erzeugen würde,:

Vielen Dank im Voraus

Antwort

1

können Sie durch Prüfen der Länge von row Leerzeilen überspringen Ich bin mir nicht sicher, wie ich das beheben soll. Schreibst du auf dem gleichen Betriebssystem, auf dem du gerade liest? Wenn nicht, könnte dies auf Unterschiede in den Zeilenendungskonventionen zurückzuführen sein.

Wenn das Problem mit Zeilenumbrüchen auftritt, können Sie den Lesercode möglicherweise mithilfe von newline=None (Standardeinstellung) anstelle von newline="" korrigieren.

+0

ich entfernte die newline = "" in der Leser-Code und versuchte Newline = Keine, aber keine funktioniert – MissComputing

+0

Ich kann nicht sehen, wie die Leerzeilen erstellt werden entweder ... jemand jemand ??? Und nein, ich benutze leider nur das gleiche Betriebssystem – MissComputing

+0

Ist es möglich, dass 'totalscore' mit einem Zeilenumbruch endet? – Barmar