Ich habe die folgende Zeichenfolge in eine Reportdatei:lesen Bunch() von String
"Bunch(conditions=['s1', 's2', 's3', 's4', 's5', 's6'], durations=[[30.0], [30.0], [30.0], [30.0], [30.0], [30.0]], onsets=[[172.77], [322.77], [472.77], [622.77], [772.77], [922.77]])"
Ich mag würde es in ein Bunch()
Objekt oder ein dict
drehen, so dass ich die Informationen innerhalb zugreifen können (über entweder my_var.conditions
oder my_var["conditions"]
).
Das funktioniert sehr gut mit eval()
:
eval("Bunch(conditions=['s1', 's2', 's3', 's4', 's5', 's6'], durations=[[30.0], [30.0], [30.0], [30.0], [30.0], [30.0]], onsets=[[172.77], [322.77], [472.77], [622.77], [772.77], [922.77]])")
aber ich würde, dass die Verwendung vermeiden möchten.
Ich habe versucht, ein paar String-Substitutionen zu schreiben, so dass ich es in eine dict-Syntax umwandeln und dann mit json.loads()
analysieren, aber das sieht sehr sehr hackish aus, und wird brechen, sobald ich irgendwelche neuen Felder in zukünftigen Strings ; Beispiel:
"{"+"Bunch(conditions=['s1', 's2', 's3', 's4', 's5', 's6'], durations=[[30.0], [30.0], [30.0], [30.0], [30.0], [30.0]], onsets=[[172.77], [322.77], [472.77], [622.77], [772.77], [922.77]])"[1:-1]+"}".replace("conditions=","'conditions':")
Sie erhalten die Idee.
Wissen Sie, ob es eine bessere Möglichkeit gibt, das zu parsen?
Was genau ist Ihre endgültige erwartete Ausgabe? Kannst du auch zeigen, was du bisher getan hast, um eine Vorstellung davon zu bekommen, wie dein Ansatz ist? – idjaw