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/