Ich arbeite mit einigen Befehlsausgabe, die als die Zeichenfolge eines Ruby-Hash zurückgegeben wird. (Von etwas, das mcollective genannt wird). HierKonvertieren einer Ruby-Hash-Zeichenfolge in ein Python-Wörterbuch
ist ein Beispiel String Ich erhalte:
{:changes=>{"total"=>0}, :events=>{"failure"=>0, "success"=>0, "total"=>0}, :version=> {"puppet"=>"2.7.21 (Puppet Enterprise 2.8.1)", "config"=>1381497648}, :time=> {"filebucket"=>0.000287, "cron"=>0.00212, "package"=>0.398982, "exec"=>0.001314, "config_retrieval"=>5.60761618614197, "anchor"=>0.001157, "service"=>0.774906, "total"=>9.85111718614197, "host"=>0.002662, "user"=>0.063606, "file"=>2.998467, "last_run"=>1381497660}, :resources=> {"skipped"=>6, "failed_to_restart"=>0, "out_of_sync"=>0, "failed"=>0, "total"=>112, "restarted"=>0, "scheduled"=>0, "changed"=>0}}
ich fähig bin ein Mini-Parser für diese zu schreiben, aber es wäre eine fiddly Aufgabe sein. Kennt jemand eine Bibliothek oder einen Codeausschnitt, der das für mich in ein Python-Wörterbuch umwandeln könnte?
Wenn Sie denken, ich sollte es nur analysieren, sind alle Tipps willkommen.
Eine schnelle Hack wäre ersetzen Sie einfach => mit: und: [a-z] + mit "\ 1" und dann ast.literal_eval oder json.loads nennen. Das wäre nicht korrekt, da es Zeichenkettenliterale ignoriert, aber es könnte für jetzt gut genug sein. – Antimony
Laut ihrer Dokumentation http://docs.puppetlabs.com/mcollective/reference/basic/basic_cli_usage.html können sie auch JSON: '-j' Flag exportieren. – georg
Nicht in der Version läuft ich leider. Aber ja, das wäre am besten – joeButler