Hola, ¿Es siempre un json lo que recibes? Lo digo porque quizás puedes intentar decodificarlo como json ¿no? https://docs.python.org/2/library/json.html He comprobado la sintaxis de la cadena que pasas y es un formato válido de json:
{ "format":"JSON", "result":{ "devices":[ { "key":"SCGDE1BA:180340320", "channels":[ { "name":"PF", "unit":"", "meta":"PF", "value":"1.000" }, { "name":"P-WSpt", "unit":"kW", "meta":"P-WSpt", "value":"935" }, { "name":"Vac", "unit":"V", "meta":"Vac", "value":"217.5" }, { "name":"Iac", "unit":"A", "meta":"Iac", "value":"513.8" }, { "name":"Pac", "unit":"kW", "meta":"Pac", "value":"335.2" }, { "name":"Qac", "unit":"kV Ar", "meta":"Qac", "value":"-1.0" }, { "name":"Sac", "unit":"kVA", "meta":"Sac", "value":"335.1" }, { "name":"Fac", "unit":"Hz", "meta":"Fac", "value":"49.950" }, { "name":"ErrNoFirst", "unit":"", "meta":"ErrNoFirst", "value":"0" }, { " name":"P-WModFailStt", "unit":"", "meta":"P-WModFailStt", "value":"Off" }, { "name":"P-WModStt", "unit":"", "meta":"P-WModStt", "value":"Off" }, { "name":"Dsc", "unit":"", "meta":"Dsc", "value":"---" }, { "name":"Firmware-9", "unit":"", "meta":"Firmware-9", "value":" " }, { "name":"Cntry", "unit":"", "meta":"Cntry", "value":"DE1" }, { "name":"Type", "unit":"", "meta":"Type", "value":"SCG" }, { "name":"Mode", "unit":"", "meta":"Mode", "value":"Operation" }, { "name":"Error", "unit":"", "meta":"Error", "value":"---" } ] } ] }, "version":"1.0" } A no ser que en otras ocasiones recibas otra cosas, lo que yo te recomendaría es que lo decodifiques y lo uses cono clave, valor. Espero que te ayude, un saludo! Un saludo -- *José Miguel Pérez Álvarez*, @jozemi <http://twitter.com/jozemi> Linkedin: http://es.linkedin.com/in/jozemi joz...@gmail.com On Tue, Jun 3, 2014 at 11:22 AM, Miguel Angel Rodriguez <maro...@gmail.com> wrote: > > Hola a todos, > > Estoy intentando parsear con Python una gran cadena que recibo en un > software de comunicaciones que estoy programando. > > La cadena que yo recibo es la siguiente: > > value_str = > {"format":"JSON","result":{"devices":[{"key":"SCGDE1BA:180340320","channels":[{"name":"PF","unit":"","meta":"PF","value":"1.000"},{"name":"P-WSpt","unit":"kW","meta":"P-WSpt","value":"935"}, > > {"name":"Vac","unit":"V","meta":"Vac","value":"217.5"},{"name":"Iac","unit":"A","meta":"Iac","value":"513.8"},{"name":"Pac","unit":"kW","meta":"Pac","value":"335.2"},{"name":"Qac","unit":"kV > > Ar","meta":"Qac","value":"-1.0"},{"name":"Sac","unit":"kVA","meta":"Sac","value":"335.1"},{"name":"Fac","unit":"Hz","meta":"Fac","value":"49.950"},{"name":"ErrNoFirst","unit":"","meta":"ErrNoFirst","value":"0"},{" > > name":"P-WModFailStt","unit":"","meta":"P-WModFailStt","value":"Off"},{"name":"P-WModStt","unit":"","meta":"P-WModStt","value":"Off"},{"name":"Dsc","unit":"","meta":"Dsc","value":"---"},{"name":"Firmware-9","unit":"","meta":"Firmware-9","value":" > "},{"name":"Cntry","unit":"","meta":"Cntry","value":"DE1"} > ,{"name":"Type","unit":"","meta":"Type","value":"SCG"},{"name":"Mode","unit":"","meta":"Mode","value":"Operation"},{"name":"Error","unit":"","meta":"Error","value":"---"}]}]},"version":"1.0" > > > Yo solo quiero quedarme con los name y value existente. > > LA forma en la que lo estoy intentando es la siguiente: > > for channel_str in re.findall("\"name\":\"[A-Za-z0-9\-. > ]+\",\"value\":\"[A-Za-z0-9\-. ]*\"",value_str): > d_value = re.findall("[A-Za-z0-9.\-]+",channel_str) > > Pero de esta forma no entra en el for. > > ¿Alguien me puede ayudar? > > Gracias y un saludo > > > > > > > -- > Miguel Ángel Rodríguez de Alba > 678304435 > maro...@gmail.com > > _______________________________________________ > Python-es mailing list > Python-es@python.org > https://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > >
_______________________________________________ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/