[Python-es] Presentación y duda con módulo re

Javier Alonso javieralonsogil en gmail.com
Mar Abr 2 11:01:53 CEST 2013


Muchas gracias a todos,

Gracias por la recomendación de split. En este caso no me sirve, pero
ya se me ha ocurrido alguna situación en la que lo necesitaré.
El código de Chema me viene perfecto, pero me está dando el siguiente fallo:

Traceback (most recent call last):
  File "pruebalista.py", line 36, in <module>
    print (pat_SOA.groupdict(cadena_limpia))
AttributeError: '_sre.SRE_Pattern' object has no attribute 'groupdict'

He probado tanto con python3 como con python2.7.

Al final buscando un poco he visto un método que devuelve una lista.

#para detectar comentarios
comments=re.compile(";.*")
#para extraer los campos
pat_SOA = re.compile("""
    (?P<Zona>@)\W+
    IN\W+
    (?P<Tipo>SOA)\W+
    (?P<Servidor_primario>[\w\.]+\.)\W+
    (?P<Correo>[\w\.]+\.)\W+
    \(\W+
        (?P<Serial>\d+)\W+
        (?P<Refresh>\d+)\W+
        (?P<Retry>\d+)\W+
        (?P<Expire>\d+)\W+
        (?P<TTL>\d+)\W+
    \)
""",re.VERBOSE)
#print (pat_SOA)
cadena_limpia=comments.sub("", cadena)
#print (cadena_limpia)
#pat_SOA.groupdict(cadena_limpia)
print(pat_SOA.findall(cadena_limpia))

Es el mismo ejemplo solo que con findall. Me viene bastante mejor que
me devuelva un diccionario, pero una lista no está mal ; ).
Si alguien puede dar con el error del groupdict perfecto.

Para Alexis, tienes razón en las listas no se debe usar html, ;) en el
mensaje lo escribí sin "http://" .

Un saludo,
Javier Alonso

El día 2 de abril de 2013 03:30, Alexis Roda
<alexis.roda.villalonga en gmail.com> escribió:
> Al 02/04/13 00:30, En/na Javier Alonso ha escrit:
>>
>> Estoy atascado con las regexp. De momento quiero separar cada elemento
>> de la siguiente cadena "@       IN      SOA ns1.nameserverprimario.com
>> <http://ns1.nameserverprimario.com>. admin.dominio.com
>> <http://admin.dominio.com>."
>>
>>
>> grupos =
>>
>> re.match('^([@]|[a-zA-z0-9\.]*\.)(\s+)IN(\s+)SOA(\s+)([@]|[a-zA-z0-9\.]*\.)(\s+)([@]|[a-zA-z0-9\.]*\.)','@
>>        IN      SOA http://ns1.nameserverprimario.com. admin.dominio.com.')
>> print(grupos.group())
>
>
> ([@]|[a-zA-z0-9\.]*\.) no encaja con http://ns1.nameserverprimario.com.
>
> Me ha costado verlo. El thunderbird ha convertido la URL en un enlace y
> claro, al copiar/pegar en el interprete no se incluía el http:// y
> funcionaba. Mejor envía mensajes con texto plano.
>
>
>
> Saludos
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/


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