2017-11-02 2 views
4

Ich habe einige ziemlich intensive Berechnungen abgeschlossen, und ich war nicht in der Lage, meine Ergebnisse in Beize (Rekursionstiefe execded) zu speichern, so dass ich gezwungen wurde, alle Daten zu drucken und in einem Text zu speichern Datei.Python - Liste der Tupel aus Datei

Gibt es einen einfachen Weg, um jetzt meine Liste der Tupel in Text zu konvertieren gut ... Liste der Tupel in Python? die Ausgabe wie folgt aussieht:

[(10, 5), (11, 6), (12, 5), (14, 5), (103360, 7), (16, 6), (102725, 7), (17, 6), (18, 5), (19, 9), (20, 6), ...(it continues for 60MB)] 
+1

Verwenden Sie ['ast.literal_eval'] (https://docs.python.org/3/library/ast.html#ast.literal_eval) –

+0

Mögliches Duplikat von https://stackoverflow.com/questions/1894269/ convert-string-representation-of-list-in-list-in-python – FcoRodr

+2

Warte, diese Daten sind ziemlich flach. Warum würde Essiggurke die Rekursionstiefe überschreiten? Ist das Datenbeispiel wirklich repräsentativ? –

Antwort

5

Sie ast.literal_eval() verwenden können:

>>> s = '[(10, 5), (11, 6), (12, 5), (14, 5)]' 
>>> res = ast.literal_eval(s) 
[(10, 5), (11, 6), (12, 5), (14, 5)] 
>>> res[0] 
(10, 5) 
+0

ich müsste dann die ganzen Daten in meine Quelle aufnehmen, nein? – KONAKONA

+0

@KONAKONA Nein, Sie würden es aus jeder Datei lesen, die es gespeichert wurde –

+0

@KONAKONA Meinst du, dass Sie nur eine Teilmenge Ihrer gespeicherten Daten konvertieren möchten? – ettanany

0
string = "[(10, 5), (11, 6), (12, 5), (14, 5), (103360, 7), (16, 6), (102725, 7), (17, 6), (18, 5), (19, 9), (20, 6)]" # Read it from the file however you want 

values = [] 
for t in string[1:-1].replace("),", ");").split("; "): 
    values.append(tuple(map(int, t[1:-1].split(", ")))) 

Zuerst habe ich den Anfang und das Ende eckige Klammer mit [1:-1] entfernen, ich ersetzen ), mit ); der Lage sein, zu spalten von ;, so dass es nicht durch die Kommas innerhalb der Tupel geteilt wird, da ihnen kein ) vorausgeht. Innerhalb der Schleife verwende ich [1:-1], um die Klammern diesmal zu entfernen und durch Kommas zu trennen. Der map Teil ist, die numerische str s in int s zu konvertieren, und ich bin sie als tuple anhängen.

Verwandte Themen