Hola a todos, Disculpad, hasta ahora no he podido responder. Al final revisando la documentación, dí con lo que comentó Alexis.
El código queda así : #para detectar comentarios comments=re.compile(";.*") #Encuentra los espacios en blanco y vacíos espacios=re.compile("\s+") #Encuentra el primer espacio en blanco espacios2=re.compile("^\s") #Limpia comentarios cadena_limpia=comments.sub("", cadena) #Sistituye todos los espacios (Retornos de carro, tabs y espacios) por un solo espacio, con lo que nos queda todo en una línea cadena_limpia=espacios.sub(" ", cadena_limpia) #Debido a la operación anterior, nos deja al principio un espacio que nos dá problemas cadena_limpia=espacios2.sub("", cadena_limpia) #para extraer los campos #Me ha dado problemas la expresión en multilinea. Lo he dejado así pat_SOA = re.match(r"(?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+\)",cadena_limpia) print(pat_SOA.groupdict()) Gracias por todo. Creo que el tema de los espacios no lo he manejado de manera muy elegante, pero funciona :) Tendré que seguir trabajando con re, pero creo que lo voy pillando. Un saludo, Javier Alonso El día 2 de abril de 2013 12:34, Alexis Roda Villalonga <alexis.roda.villalo...@gmail.com> escribió: > 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/ > _______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/