Extraer texto entre dos palabras dentro de un archivo


Entre mis numerosos archivos, se encontraba una recopilación de los marcadores de un navegador que tenía en el portátil que fue mi máquina principal durante varios años. Allí se daban cita enlaces de todo pelaje que necesitaban a marchas forzadas de cierta organización. Muchos de ellos simplemente servían de recordatorio para escribir en un futuro sobre ellos, otros eran herramientas que quería tener a mano para cuando las necesitara y un buen puñado de ellos, tristemente, ya no llevaban a ninguna parte.

El problema a la hora de navegar por el archivo HTML, es que no podía borrar de forma rápida y sencilla los enlaces que iba visitando a medida que los iba categorizando. Al abrirlo con un editor de texto, aparecía mucho código innecesario entre el cual tenía que desenterrar el enlace en cuestión. Y luego me llevaba unos preciosos segundos borrar la entrada. Puede parecer poco tiempo pero es que tenía más de mil enlaces.

La solución vino en forma de script en Python. Sinceramente, no tengo tiempo para perder en cosas sencillas, así que me fui a ChatGPT y le pedí exactamente: "podrías crear un script en python que extraiga el texto de un archivo entre dos palabras que el usuario proporcione?" Error por mi parte, porque me ofreció un código que no me servía, ya que no solo simplemente mostraba por pantalla el enlace, sino que solo mostraba el primero de ellos. Así que tras varias correcciones, logré obtener el siguiente script:

# Pedimos al usuario el nombre del archivo y las dos palabras que queremos buscar
archivo = input("Introduce el nombre del archivo: ")
palabra1 = input("Introduce la primera palabra: ")
palabra2 = input("Introduce la segunda palabra: ")
nombre_salida = input("Introduce el nombre del archivo de salida: ")
# Abrimos el archivo en modo lectura y el archivo de salida en modo escritura
with open(archivo, "r") as f, open(nombre_salida, "w") as salida:
    # Leemos todo el contenido del archivo
    contenido = f.read()
    # Inicializamos una lista vacía para almacenar el texto entre las palabras
    textos = []
    # Buscamos la posición de la primera palabra
    pos1 = contenido.find(palabra1)
    # Si no encontramos la primera palabra, salimos del programa
    if pos1 == -1:
        print(f"No se encontró la palabra '{palabra1}' en el archivo")
        exit()
    # Continuamos buscando la segunda palabra a partir de la posición de la primera
    while pos1 != -1:
        pos2 = contenido.find(palabra2, pos1)
        # Si no encontramos la segunda palabra, salimos del bucle
        if pos2 == -1:
            break
        # Extraemos el texto entre las dos palabras
        texto = contenido[pos1+len(palabra1):pos2]
        textos.append(texto)
        # Continuamos buscando la primera palabra a partir de la posición de la segunda
        pos1 = contenido.find(palabra1, pos2+len(palabra2))
    # Escribimos los textos resultantes en el archivo de salida, separados por un salto de línea
    salida.write("\n".join(textos))


Y listo, ya tenía mi lista de archivos en un archivo de texto editable. La revolución de la inteligencia artificial, aparte de los beneficios productivos, es la posibilidad de que una persona con escasos conocimientos informáticos, pueda crear o utilizar soluciones ad hoc para sus pequeños problemas. Como dije, con un poco de paciencia, podría haber creado desde cero yo mismo este programa, pero como mis conocimientos de Python están un poco oxidados, me hubiera llevado unas valiosas horas que ahora aprovecharé para otros menesteres.
Compartir:
spacer

No hay comentarios:

Publicar un comentario

Comenta lo que quieras