es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo realizar un bucle en ciertas líneas de un archivo de texto mediante condiciones de inicio?

Estoy tratando de resolver un problema de codificación en Python, y mi seudocódigo se ve así:

x = 0
for line[x] in file:
    if line[x].startswith('>') 
        next(line)
    while line[x] in file # !startswith('>'): do thing

Lo que trato de lograr es omitir cualquier línea que comience con ‘>’, luego, por cada línea posterior, quiero hacer algo hasta que la siguiente línea comience con ‘>’.

He buscado esta pregunta y otras preguntas que he encontrado no mencionan la función startswith y en su lugar hablan sobre usar readline() para extraer ciertas líneas. Lo cual no es lo que quiero hacer. ¿Alguien puede indicarme una buena dirección para buscar?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que estás en el camino correcto utilizando el método startswith() para identificar las líneas que comienzan con “>” y omitirlas.

    Para lograr el siguiente paso de realizar una acción en cada línea después de la que comienza con “>” y detenerte cuando encuentres otra línea que comienza con “>”, es posible que desees considerar el uso de una bandera booleana para llevar un registro de cuándo estás en el bucle de “hacer algo”.

    Aquí hay una versión modificada de tu seudocódigo con una bandera agregada:

    x = 0
    do_thing_flag = False
    
    for line[x] in file:
        if line[x].startswith('>'): 
            if do_thing_flag:
                do_thing_flag = False # reiniciar la bandera cuando se encuentre una nueva línea ">"
            else:
                continue # omitir la línea que comienza con ">"
        elif not do_thing_flag:
            do_thing_flag = True # iniciar el bucle de "hacer algo" cuando se encuentre la primera línea diferente de ">"
        else:
            # realiza la acción de "hacer algo" aquí
    

    Este código debería omitir cualquier línea que comience con “>”, luego ingresar a un bucle donde realiza la acción de “hacer algo” para cada línea hasta que encuentre otra línea que comience con “>”. Cuando eso suceda, debe omitir la línea y restablecer la bandera para indicar que ya no se encuentra en el bucle de “hacer algo”.

    ¡Espero que eso ayude!

Comments are closed.