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.

Analizando archivo y agregando cadena en Python.

Digamos que tengo un archivo:

This is the first line
Ages = ["young*","old*"] //Esta era la segunda línea, puse un * a posta
This is the third line

El escenario es el siguiente:

  1. Sé que hay un arreglo llamado “Ages” dentro del archivo, pero no tengo idea de sus elementos.
  2. Ahora quiero agregar una cadena específica, digamos “test*”, después de cada elemento. El archivo quedaría así:
This is the first line
Ages = ["young*test*","old*test*"] //Esta era la segunda línea, puse un * a posta
This is the third line

¿Alguna ayuda?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, podemos usar Python para lograr esto. Así es como puede hacerlo:

    1. Abrir el archivo en modo de lectura y leer todas las líneas.
    with open('nombredelfichero.txt', 'r') as f:
        content = f.readlines()
    
    1. Recorra las líneas y encuentre la línea que contiene la matriz “Ages”.
    for i, line in enumerate(content):
        if 'Ages' in line:
            array_line = i
            break
    
    1. Extraiga los elementos de la matriz “Ages” usando funciones de manipulación de cadenas como “split” y “strip”.
    ages_line = content[array_line]
    ages_start = ages_line.index('[')
    ages_end = ages_line.index(']')
    ages = ages_line[ages_start+1:ages_end].strip()
    elements = [e.strip('"') for e in ages.split(',')]
    
    1. Agregue la nueva cadena a cada elemento y construya la nueva línea para la matriz.
    new_elements = [e + 'test*' for e in elements]
    new_ages = 'Ages = [' + ','.join(['"' + e + '"' for e in new_elements]) + ']'
    
    1. Reemplace la línea original con la nueva línea y escriba el contenido modificado de vuelta al archivo.
    content[array_line] = new_ages
    with open('nombredelfichero.txt', 'w') as f:
        f.write(''.join(content))
    

    El código final se verá algo así:

    with open('nombredelfichero.txt', 'r') as f:
        content = f.readlines()
    
    for i, line in enumerate(content):
        if 'Ages' in line:
            array_line = i
            break
    
    ages_line = content[array_line]
    ages_start = ages_line.index('[')
    ages_end = ages_line.index(']')
    ages = ages_line[ages_start+1:ages_end].strip()
    elements = [e.strip('"') for e in ages.split(',')]
    new_elements = [e + 'test*' for e in elements]
    new_ages = 'Ages = [' + ','.join(['"' + e + '"' for e in new_elements]) + ']'
    
    content[array_line] = new_ages
    with open('nombredelfichero.txt', 'w') as f:
        f.write(''.join(content))
    

    Nota: El código anterior asume que solo hay una línea con la matriz “Ages” y que los elementos están encerrados entre comillas dobles. Si su formato de archivo es diferente, es posible que deba ajustar el código en consecuencia.

Comments are closed.