2016-05-01 3 views
-1

Es gibt eine Liste, wo jedes Mitglied eine 8-stellige Zeichenfolge ist.Beim Schreiben von Liste zu Datei, die endgültige Ausgabe fehlt einige Mitglieder der Liste

values = [ '12345678', '23848238', '23441236', ... 

Ich möchte all denen auf einer .txt wie folgt schreiben:

123456782384823823441236... 

ich so mit dem folgenden Code zu tun versucht:

x = open('a.txt', 'w') 
for l in range(len(values)): 
    for m in range(0,7): 
     current = values[l] 
     x.write(current[m]) 
     x.seek((l*8)+(m)) 

Das Ergebnis ist ein .txt fehlt die erste Ziffer (im Beispiel die '1'), und dann fehlt jede achte Ziffer bis zum Ende. Ich habe versucht, mit der Art, wie ich alles indiziere, herumzualbern (und habe die erste Ziffer angezeigt), aber es verfehlt immer noch jede achte Ziffer.

+1

Warum iterieren Sie über einen Bereich und suchen und all diese Sachen anstatt nur jeden Wert auf die normale Weise zu schreiben? – TigerhawkT3

+0

Was ist der normale Weg? Ich habe Python vor 15 Minuten benutzt, ich kenne mich damit nicht aus. Irgendwelche Vorschläge sind willkommen. – wet

+0

Python optimiert den allgemeinen Fall, z. B. das Schreiben einer Zeichenfolge in eine Datei. Für die normale Vorgehensweise siehe meine Antwort unten. – TigerhawkT3

Antwort

1

Sie verpassen das erste Zeichen, weil Ihre seek am Ende der Schleife ist - wodurch Sie das erste Zeichen in der zweiten Iteration zu überschreiben.

Sie verpassen jeden 8. Zeichen, weil range(0,7)[0,1,2,3,4,5,6] ist

Sie wirklich Daten wie diese, nur geben die Elemente nacheinander als @ TigerhawkT3 vorgeschlagen Schreiben aufhören sollte - nicht der Suche nach überhaupt nicht.

+0

Also ist der Bereich exklusiv für die Sieben, oder ist die Indizierung in diesem Fall anders als die aus Strings/Listen? Und ach ja, jetzt sehe ich, dass die "Suche" am Ende der Schleife wirklich für die fehlende 1. Stelle verantwortlich war. Danke, dass Sie das herausgefunden haben. Was ist los mit Suchen und etc ..., wenn ich fragen darf? – wet

+0

Es ist einfach nicht notwendig. Sie suchen, wo sich der Dateizeiger befindet. – zmbq

1

Es ist nicht notwendig, Längen zu überprüfen und alles zu suchen, wenn Sie nur alle Zeichenfolgen in dieser Liste in eine Datei schreiben möchten.

with open('a.txt', 'w') as output: 
    for item in values: 
     output.write(item) 
Verwandte Themen