Re: [Python-es] Problemas con el modulo re
2012/3/1 alito s alit...@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. ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] Problemas con el modulo re
Hola Carlos: Gracias por tu sugerencia. Como siempre hay mil formas de hacerse cosas. Saludos! El 05/03/2012, a las 06:34, Carlos Zuniga carlos@gmail.com escribió: 2012/3/1 alito s alit...@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. ___ 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] Problemas con el modulo re
Hola a tod@s: Me gustaría preguntarles una cosa, quizás muy básica pero llevo un ratito rompiendome la cabeza. Resulta que estoy buscando una secuencia en particular en un formato denominado fasta. Mi problema viene cuando quiero que me ponga el nombre de la secuencia y además lo que estoy buscando en la secuencia. Por ejemplo, el archivo fasta consta de un dónde se encuentra el nombre de la secuencia, seguido por un \n y posteriormente la secuencia como tal. Ejemplo de formato fasta hsa58962351 | 4568 CUGUACAGCCUCCUAGCUUUCC Hice el siguiente programa: inp = open(files, 'r') myfile = inp.readlines() for line in myfile: match1 = re.search(r'()(.*)(\n)', line) match2 = re.search(r'(UGAGGUAGUAGGUUGUAU)(\w+)', line) # Es aqui donde ya me hago pelotas, porque lo que quiero es que me imprima en la pantalla tanto el nombre de la secuencia como la línea donde entontro mi secuencia determinada (match2). # Entonces pongo algo así: if match2: print match1.group() + \n print match2.group() + \n # Evidentemente aqui tengo un error garrafal porque match2 no lo encuentra, simplemente porque no se encuentra en la misma línea dónde busco match1. Entonces decidi hacer lo siguiente: for line in myfile: match1 = re.search(r'()(.*)(\n)(UGAGGUAGUAGGUUGUAU)(\w+)', line) Pero tampoco me funciona. Así que después de contarles mi trágica historia quería ver si alguien de ustedes sabe como buscar en varias líneas o como imprimir mis busquedas (el caso en donde busco match1 y match2) en la pantalla. Gracias. ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/
Re: [Python-es] Problemas con el modulo re
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! 2012/3/1 alito s alit...@gmail.com Hola a tod@s: Me gustaría preguntarles una cosa, quizás muy básica pero llevo un ratito rompiendome la cabeza. Resulta que estoy buscando una secuencia en particular en un formato denominado fasta. Mi problema viene cuando quiero que me ponga el nombre de la secuencia y además lo que estoy buscando en la secuencia. Por ejemplo, el archivo fasta consta de un dónde se encuentra el nombre de la secuencia, seguido por un \n y posteriormente la secuencia como tal. Ejemplo de formato fasta hsa58962351 | 4568 CUGUACAGCCUCCUAGCUUUCC Hice el siguiente programa: inp = open(files, 'r') myfile = inp.readlines() for line in myfile: match1 = re.search(r'()(.*)(\n)', line) match2 = re.search(r'(UGAGGUAGUAGGUUGUAU)(\w+)', line) # Es aqui donde ya me hago pelotas, porque lo que quiero es que me imprima en la pantalla tanto el nombre de la secuencia como la línea donde entontro mi secuencia determinada (match2). # Entonces pongo algo así: if match2: print match1.group() + \n print match2.group() + \n # Evidentemente aqui tengo un error garrafal porque match2 no lo encuentra, simplemente porque no se encuentra en la misma línea dónde busco match1. Entonces decidi hacer lo siguiente: for line in myfile: match1 = re.search(r'()(.*)(\n)(UGAGGUAGUAGGUUGUAU)(\w+)', line) Pero tampoco me funciona. Así que después de contarles mi trágica historia quería ver si alguien de ustedes sabe como buscar en varias líneas o como imprimir mis busquedas (el caso en donde busco match1 y match2) en la pantalla. Gracias. ___ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/