[Python-es] Expresiones regulares

Chema Cortes pych3m4 en gmail.com
Mar Jun 3 12:38:43 CEST 2014


El 3 de junio de 2014, 11:56, Miguel Angel Rodriguez <marodal en 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 <nadaird en 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 <
>> marodal en 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
>>> marodal en gmail.com
>>>
>>> _______________________________________________
>>> Python-es mailing list
>>> Python-es en python.org
>>> https://mail.python.org/mailman/listinfo/python-es
>>> FAQ: http://python-es-faq.wikidot.com/
>>>
>>>
>>
>> _______________________________________________
>> Python-es mailing list
>> Python-es en python.org
>> https://mail.python.org/mailman/listinfo/python-es
>> FAQ: http://python-es-faq.wikidot.com/
>>
>>
>
>
> --
> Miguel Ángel Rodríguez de Alba
> 678304435
> marodal en gmail.com
>
> _______________________________________________
> Python-es mailing list
> Python-es en 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
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20140603/eda90843/attachment.html>


Más información sobre la lista de distribución Python-es