17 Stimmen

Parsen einer Zeichenkette, die eine Liste von Tupeln darstellt

Ich habe Saiten, die wie diese aussehen:

"(8, 12.25), (13, 15), (16.75, 18.5)"

und ich möchte jeden von ihnen in eine Python-Datenstruktur konvertieren. Vorzugsweise eine Liste (oder Tupel) von Tupeln, die ein Paar von Float-Werten enthalten.

Das könnte ich tun mit eval("(8, 12.25), (13, 15), (16.75, 18.5)") was mir ein Tupel von Tupeln liefert, aber ich glaube nicht, dass die naive Auswertung externer Informationen eine kluge Entscheidung wäre.

Deshalb habe ich mich gefragt, wie eine elegante pythonische Lösung aussehen könnte.

1voto

ghostdog74 Punkte 305138

Was ist falsch daran, es systematisch zu machen? Aufteilen auf ")", dann durch die Liste gehen, alle "(" entfernen.

>>> s="(8, 12.25), (13, 15), (16.75, 18.5)"
>>> [ i.replace("(","") for i in s.split(")") ]
['8, 12.25', ', 13, 15', ', 16.75, 18.5', '']
>>> b = [ i.replace("(","") for i in s.split(")") ]
>>> for i in b:
...  print i.strip(", ").replace(" ","").split(",")
...
['8', '12.25']
['13', '15']
['16.75', '18.5']
['']

Jetzt können Sie jedes Element in Ihre Datenstruktur einfügen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X