Cómo eliminar una línea específica y las siguientes n líneas desde un archivo txt?

SVill:

Estoy creando un programa para actualizar un archivo de texto, que tiene una lista de las ciudades:

New York City
New York
USA

Newark
New Jersey
USA

Toronto
Ontario
Canada

Si quisiera eliminar los detalles de Newark usando una escritura del golpe, no puedo hacer esto:

sed -i "/Newark/,+3d" test.txt

Y eso me llevarse el siguiente:

New York City
New York
USA

Toronto
Ontario
Canada

Sin embargo, me gustaría hacer esto en Python, y estoy teniendo problemas encontrar la manera de eliminar las siguientes líneas, después de la línea de Newark. Puedo eliminar Newark:

with open('test.txt') as oldfile, open('test2.txt', 'w') as newfile:
        for line in oldfile:
            if not "Newark" in line:
                newfile.write(line)

os.remove('test.txt')
os.rename('test2.txt', 'test.txt')

Pero esto no hace nada para las dos líneas restantes, y crea un nuevo archivo a continuación, tengo que usar para reemplazar el archivo original.

  1. ¿Cómo puedo ir sobre imitando la funcionalidad del comando sed con Python?
  2. ¿Hay alguna manera de hacer un archivo de edición, así que no tengo que crear y reemplazar el archivo cada vez que tengo que eliminar de ella?
Raphael Medaer:

Con un contador? Aquí está:

with open('test.txt') as oldfile, open('test2.txt', 'w') as newfile:
    skip = 0
    for line in oldfile:
        if "Newark" in line:
            skip = 3
        elif skip > 0:
            skip = skip - 1
        else:
            newfile.write(line)

Editar:

Sólo respondí a la primera pregunta. fileinput edición de archivos de soporte, por favor, eche un vistazo aquí: Cómo buscar y reemplazar texto en un archivo? Por cierto, yo recomendaría también en el lugar , ya que no secuestrar stdout

Supongo que te gusta

Origin http://10.200.1.11:23101/article/api/json?id=388155&siteId=1
Recomendado
Clasificación