2016-05-09 3 views
-2

Ich habe eine Zeichenfolge des Formats -Wie die Zeichenfolge in Liste von Tupeln analysieren

" ((4, 4), (11, 23), (8, 2), (12, 4), (7, 9)) " 

Was ist die beste Art und Weise, in der ich diese Zeichenfolge in sinnvolle integer Tupel erhalten? Nehmen wir fun(s) eine Funktion ist, die eine solche strings als Parameter nimmt und list von tuplea

Bsp.

a = fun("((2, 3), (1, 4))") 
print (a) 
>>> [(2, 3), (1, 4)] 
a[0] 
>>> (2, 3) 
a[0][1] 
>>> 3 
+0

Warum wird dies abgelehnt? Ich habe fast alle Anstrengungen unternommen (Bearbeitung, Formatierung, Tippfehler), bevor ich eine Frage gestellt habe. – user3903448

+0

Lassen Sie mich wissen, was fehlt, bevor Sie es ablehnen. – user3903448

Antwort

-2

können Sie Python eingebauten in eval() Funktion.

In diesem Fall können Sie Ihren Code wie folgt schreiben:

s = " ((4, 4), (11, 23), (8, 2), (12, 4), (7, 9)) " 
print(list(eval(s))) 
1

Für diese Art der Sache, ast.literal_eval bevorzugt, nur die eingebaute in eval, vor allem, wenn die Zeichenfolge etwas ist, das kommen mag eine unbekannte Quelle. Der Anruf-Schnittstelle ist die gleiche wie eval:

print(list(ast.literal_eval(s))) 

jedoch ast.literal_eval gegen Code Einfügungen schützen wird, die Systemdienste (wie diejenigen, die Dateien löschen könnten, etc.) nennen können, und nehmen nur Literalwerte.

Verwandte Themen