Comment supprimer une ligne spécifique et les lignes n suivantes à partir d'un fichier txt?

SVill:

Je crée un programme pour mettre à jour un fichier texte, qui a une liste des villes:

New York City
New York
USA

Newark
New Jersey
USA

Toronto
Ontario
Canada

Si je voulais supprimer les détails pour Newark en utilisant un script bash, je peux le faire:

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

Et cela me laisse avec ce qui suit:

New York City
New York
USA

Toronto
Ontario
Canada

Cependant, je voudrais faire en Python, et je vais avoir des problèmes à trouver comment supprimer les lignes suivantes, après la ligne avec Newark. Je peux supprimer 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')

Mais cela ne fait rien pour les deux autres lignes, et crée un nouveau fichier, je dois ensuite utiliser pour remplacer le fichier d'origine.

  1. Comment puis-je aller sur la fonctionnalité mimant la commande sed avec Python?
  2. Est-il possible de faire une en édition de fichiers, donc je ne dois pas créer et remplacer le fichier à chaque fois de je dois supprimer de lui?
Raphael Medaer:

Avec un compteur? C'est ici:

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)

Éditer:

Je ne répondu à la première question. fileinput édition de fichiers de support, s'il vous plaît jeter un oeil ici: Comment rechercher et remplacer du texte dans un fichier? BTW, je recommanderais également en place , car il ne pirater pas stdout

Je suppose que tu aimes

Origine http://10.200.1.11:23101/article/api/json?id=388151&siteId=1
conseillé
Classement