[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