Tupel von Listen aus Textdatei als Tupel einlesen, nicht als String - Python

7

Ich habe eine Textdatei, die ich gerne einlesen würde und die Tupelzeilen enthält. Jedes Tupel / Zeile im Text hat die Form von ('description string', [Liste der Ganzzahlen 1], [Liste der Ganzzahlen 2]). Die Textdatei könnte etwa so aussehen:

("Punkt 1", [1,2,3,4], [4,3,2,1])
("Punkt 2", [], [4,3,2,1])
("Punkt 3, [1,2], [])

Ich möchte in der Lage sein, jede Zeile aus der Textdatei zu lesen und sie dann direkt in eine Funktion einzufügen, in der

steht %Vor%

Ich weiß, dass jede Zeile als eine Zeichenfolge eingelesen wird, aber ich muss diese Zeichenfolge etwas wie extrahieren. Ich habe versucht, eine string.split (',') zu verwenden, aber das kommt zu Problemen, wenn ich auf die Listen stoße. Gibt es eine Möglichkeit, dies zu erreichen, oder muss ich meine Textdateien ändern, wie?

Ich habe auch eine Textdatei aus einer Liste von Tupeln, die ich ähnlich lesen möchte, in der Form von

[(1,2), (3,4), (5,6), ...]

, das eine beliebige Anzahl an Tupeln enthalten kann. Ich möchte es in einer Liste lesen und für jedes Tupel in der Liste eine for-Schleife machen. Ich denke, diese beiden werden ungefähr den gleichen Prozess verwenden.

    
Das.Rot 28.01.2011, 20:32
quelle

3 Antworten

12

Wie wäre es mit eval ?

BEARBEITEN Siehe @ Ignacios Antwort mit ast.literal_eval .

%Vor%

Ich würde dies nur empfehlen, wenn Sie den Inhalt der Datei zu 100% sicher haben.

%Vor%

Siehe @ Ignacios Antwort ... viel, viel sicherer.

Die Verwendung von ast würde Folgendes ergeben:

%Vor%     
sberry 28.01.2011, 20:36
quelle
21

Sie suchen ast.literal_eval() .

%Vor%     
Ignacio Vazquez-Abrams 28.01.2011 20:39
quelle
1

Sie können sich auch das Modul pickle ansehen, um Python-Objekte in Textdateien zu speichern und anschließend zu lesen sie zurück.

    
user297250 28.01.2011 21:20
quelle

Tags und Links