Programa de Python para eliminar una línea específica del archivo

En este artículo, vamos a ver cómo eliminar las líneas específicas de un archivo usando Python

A lo largo de este programa, como ejemplo, utilizaremos un archivo de texto llamado meses.txt sobre el que se realizarían varias operaciones de borrado.

Método 1: Eliminar una línea usando una posición específica

En este método, el archivo de texto se lee línea por línea usando readlines(). Si una línea tiene una posición similar a la posición que se va a eliminar, no se escribe en el archivo de texto recién creado. 

Ejemplo:

Python3

# deleting a line
# based on the position
 
# opening the file in
# reading mode
 
try:
    with open('months.txt', 'r') as fr:
        # reading line by line
        lines = fr.readlines()
         
        # pointer for position
        ptr = 1
     
        # opening in writing mode
        with open('months.txt', 'w') as fw:
            for line in lines:
               
                # we want to remove 5th line
                if ptr != 5:
                    fw.write(line)
                ptr += 1
    print("Deleted")
     
except:
    print("Oops! something error")

Producción:

Deleted

Se escribió ‘5 de mayo’ en la quinta línea, que se eliminó como se muestra a continuación:

Método 2: Eliminar una línea usando un texto que coincida exactamente con la línea

En este método, después de leer el archivo, cada línea se verifica si coincide exactamente con el texto dado. Si no coincide, entonces se escribe en un nuevo archivo.

Python3

# deleting a line on the basis
# of a matching text (exactly)
 
# we want to remove a line
# with text = '8-August'
try:
    with open('months.txt', 'r') as fr:
        lines = fr.readlines()
 
        with open('months_2.txt', 'w') as fw:
            for line in lines:
               
                # strip() is used to remove '\n'
                # present at the end of each line
                if line.strip('\n') != '8-August':
                    fw.write(line)
    print("Deleted")
except:
    print("Oops! something error")

Producción:

Deleted

La línea que tiene exactamente ‘8 de agosto’ se eliminó como se muestra: 

Método 3: Usar lógicas hechas a la medida

Ejemplo 1: Eliminación de líneas que contienen un patrón específico

Aquí, se eliminan las líneas que contienen el patrón de string especificado. El patrón puede no ser necesariamente la línea exacta completa.

Python3

# deleting a line matching
# a specific pattern or
# containing a specific string
 
# we want to delete a line
# containing string = 'ber'
try:
    with open('months.txt', 'r') as fr:
        lines = fr.readlines()
 
        with open('months_3.txt', 'w') as fw:
            for line in lines:
               
                # find() returns -1
                # if no match found
                if line.find('ber') == -1:
                    fw.write(line)
    print("Deleted")
except:
    print("Oops! something error")

Producción:

Deleted

Se han eliminado todas las líneas que contienen el patrón ‘ber’, como ‘ 9 de septiembre’, ’10 de octubre’, ’11 de noviembre’, ’12 de diciembre’ .

Ejemplo 2: Eliminación de líneas con la condición

Si tenemos como condición que las líneas de nuestro archivo deben tener una longitud mínima. Entonces, el siguiente ejemplo muestra cómo eliminar líneas que no tienen una longitud mínima especificada.

Python3

# deleting all the lines that are
# not having the minimum length
# excluding the newline '\n' character
 
# let the min_len = 7
try:
    with open('months.txt', 'r') as fr:
        lines = fr.readlines()
 
        min_len = 7
 
        with open('months_4.txt', 'w') as fw:
            for line in lines:
                if len(line.strip('\n')) >= min_len:
                    fw.write(line)
 
    print("Deleted")
except:
    print("Oops! something error")

Producción:

Deleted

Se eliminan todas las líneas que no tienen una longitud mayor o igual a 7:

Publicación traducida automáticamente

Artículo escrito por riyaaggarwal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *