2016-04-03 15 views
-1

Was ich versuche zu tun ist, dass mein Python-Code eine .txt-Datei mit ";" Trennen Sie die Werte in jeder Zeile, trennen Sie dann die einzelnen Werte in jeder Zeile von einer Liste und fügen Sie diese Werte schließlich einer zugewiesenen Liste hinzu.Python3.5.1: Anhängen an eine Liste aus einer Liste funktioniert nicht

Hier ist, was ich versucht habe ...

pullData= open("example.txt", "r", encoding='utf-8').read() 
dataArray = pullData.split('\n') 
array_one = [] 
array_two = [] 

for eachLine in dataArray: 
    lineArray = eachLine.split(';') 
    array_one.append(lineArray[0]) 
    array_two.append(lineArray[1]) 

Dieses Beispiel führt zu einem Fehler:

Traceback (most recent call last): 
    File "MyPath.py", line 25, in <module> 
    array_two.append(lineArray[1]) 
IndexError: list index out of range 

Die Aufspaltung jeder Zeile funktioniert, wie es diese Listen als Druck sollte gut funktioniert ; d. h .:

for eachLine in dataArray: 
     lineArray = eachLine.split(';') 
     print(lineArray[0]) 
     print(lineArray[1]) 

... wie oben beschrieben, was es sollte.

>>> 
RESTART: MyPath.py 
Jeff 
1009 

Bill 
771 

Irgendwelche Ideen, was das Problem hier sein könnte ...?

P.S. Die Daten (das heißt „example.txt“) ist so etwas wie dieses:

Jeff;1009;3486;24047 
Bill;771;371;3867 
Michael;931;2131;3331 
Jess;3311;9761;3886 
Cathy;571;1301;63668 
+1

Offenbar nicht alle Ihre Daten ist lang genug – jonrsharpe

+0

Sorry, aber Sie verwenden es eine andere Datei, möglicherweise mit einem zusätzlichen Newline am Ende. –

+0

Meinst du fehlende Werte innerhalb von Zeilen oder dass einige der "Zeilen" in der .txt-Datei nicht genug enthalten, um zu teilen? Weil ich die ersten 50 Zeilen der Datei doppelt geprüft habe und einen Testlauf durchgeführt habe, der immer noch fehlgeschlagen ist ...:/ – GPost

Antwort

1

Vielleicht ein Sie am Ende der Datei eine leere Newline haben. Versuchen:

for eachLine in dataArray: 
    lineArray = eachLine.split(';') 
    if len(lineArray) >= 2: 
     array_one.append(lineArray[0]) 
     array_two.append(lineArray[1]) 
+0

Prost! Du hattest recht, es war eine extra Zeile am unteren Rand, obwohl ich versuchte vorsichtig zu sein ..: D Aber deine Zeile "if len (lineArray)> = 2:" hat perfekt funktioniert! Ich danke dir sehr! – GPost

Verwandte Themen