[Python-es] Problemas con el modulo re
Carlos Zuniga
carlos.zun en gmail.com
Lun Mar 5 13:34:03 CET 2012
2012/3/1 alito s <alito81 en gmail.com>:
> Hola de nuevo:
> Ya tengo respuesta a mi pequeño dilema.
> Les pongo el código y espero que a alguien le sirva en un futuro.
>
> match1 = re.compile(r"^(>)(.+)(\n)(UGAGGUAGUAGGUUGUAU)(\w+)", re.MULTILINE)
> for match in match1.finditer(myfile):
> sequence = match.group()
> print sequence
>
> El detalle estaba en que cuando uno quiere buscar en diferentes líneas,
> tiene que utilizar MULTILINE, jeje...
> Si alguien tiene alguna sugerencia, es bienvenida.
> Saludos!
Cuando necesito iterar sobre pares de algo utilizo está función:
def iterpairs(iterable):
it = iter(iterable)
first = next(it)
for second in it:
yield first, second
first = second
Que por ejemplo para 'ABCDE' devuelve AB, BC, CD y DE.
En caso del código en tu primer mensaje quedaría así:
for line1, line2 in iterpairs(myfile):
match1 = re.search(r'(>)(.*)(\n)', line1)
match2 = re.search(r'(UGAGGUAGUAGGUUGUAU)(\w+)', line2)
if match2:
print match1.group() + "\n"
print match2.group() + "\n"
Saludos
--
Linux Registered User # 386081
A menudo unas pocas horas de "Prueba y error" podrán ahorrarte minutos
de leer manuales.
Más información sobre la lista de distribución Python-es