El 3 de junio de 2014, 11:56, Miguel Angel Rodriguez <maro...@gmail.com> escribió:
> En principio necesito hacerlo con expresiones regulares. ¿Lo veis muy > complicado? > > No es que sea complicado, sólo buscamos cómo trabajar menos, como los buenos informáticos. > ¿No creeis que casi está con la expresion regular que indiqué en mi primer > correo? > > Lo que veo de la expresión es que buscas "name" seguido inmediatamente de "value", cosa que no ocurre. Prueba a separar los campos con algo así: '''"name":"(?P<name>[\w\d\-. ]+)".*?,"value":"(?P<value>[\w\d\-. ]*)"''' > > > > El 3 de junio de 2014, 11:52, Guillermo Vaya <nada...@gmail.com> escribió: > > Si es un json (como indica el ejemplo que pones) ¿por qué no usas alguna >> de las librerias de json para que lo parsee? >> >> A partir de ahi solo tienes que recorrerlo como una estructura de datos y >> coger aquello que quieras sin los lios inherentes a hacer tus propias >> expresiones regulares. >> >> >> 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/ >> >> > > > -- > 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/ > > -- Hyperreals *R "Quarks, bits y otras criaturas infinitesimales": http://ch3m4.org/blog Buscador Python Hispano: http://ch3m4.org/python-es
_______________________________________________ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/