2016-05-13 5 views
1

Ich lese in einer Datei, in der jede Zeile eine binäre Zeichenfolge enthält, wie 01000000 00001000 00000000 11111111, und eine Zahl, 0 oder 1, zwei Leerzeichen nach der binären Zeichenfolge, die dieser binären Zeichenfolge entspricht. So ein Beispiel Zeile wie folgt aussieht:
01000000 00001000 00000000 11111111 0Python teilt Zeilen aus Datei in zwei separate Listen

ich mein Programm ausgegeben werden soll dieses:
['01000000', '00001000', '00000000', '11111111'] ['0']

Das ist mein Code ist jetzt:

def main(): 
f=open('file.txt', 'r').readlines() 
for line in f: 
    words = line.split(" ", 1) 
    wordsList=list(words) 
    for i in range(0, len(wordsList)-1): 
     binary = wordsList[i:i+1] 
     link = wordsList[i+1:i+2] 
     print(binary) 
     print(link) 
main() 

Gerade jetzt, wenn ich Führen Sie es aus, das Programm gibt das zurück:
['01000000 00001000 00000000 1111111'] ['0']

Was fehlt mir hier?

+0

Nur um zu klären, wir sprechen hier nicht über tatsächliche binäre Daten nur Stringdarstellungen von 0 und 1 ist ?? –

+0

'.split()' gibt eine Liste zurück, es gibt keine Notwendigkeit für die 'wordsList = Liste (Wörter)' Sie können nur 'binary = words [0]' und 'link = words [1]' haben, aber dann müssen Sie 'print (binary.split (" "))', wenn diese Zeichenfolge die einzelnen Binärzeichenfolgen aufteilen soll. – Tony

Antwort

1

Sie sollten die gesamte Linie teilen und dann die endgültige Nummer abschneiden.

Um die Linie zu teilen, verwenden Sie line.split(). Die Standardparameter funktionieren einwandfrei.

Um das resultierende Array in Scheiben zu schneiden, greift line[:-1] alle Elemente bis auf, aber nicht einschließlich, des letzten. line[-1:] ergreift das letzte Element.

Beispielprogramm:

def main(): 
    with open('file.txt') as f: 
     for line in f: 
      line = line.split() 
      binary = line[:-1] 
      link = line[-1:] 
      print(binary) 
      print(link) 

if __name__ == "__main__": 
    main() 
+0

Wow, ich fühle mich jetzt blöd .. Danke! – Matt

+0

Ich habe dich nicht als dumm empfunden, als ich die Antwort geschrieben habe. Du brauchst nur ein frisches Paar Augen, um das Problem zu betrachten. Mach dich nicht fertig. –