patSOA es un patrón compilado y no define groupdict. Tienes que hacer algo
como:

resultado = patSOA.match(cadena)
d = resultado.groupdict()
print d["Tipo"]


Saludos


2013/4/2 Javier Alonso <javieralonso...@gmail.com>

> 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.villalo...@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@python.org
> > http://mail.python.org/mailman/listinfo/python-es
> > FAQ: http://python-es-faq.wikidot.com/
> _______________________________________________
> Python-es mailing list
> Python-es@python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
_______________________________________________
Python-es mailing list
Python-es@python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a