どのように特定のラインとtxtファイルから次のn行を削除するには?

SVill:

私は都市のリストを持っているテキストファイルを更新するプログラムを作成しています:

New York City
New York
USA

Newark
New Jersey
USA

Toronto
Ontario
Canada

私はbashスクリプトを使用してニューアークの詳細を削除したい場合は、私はこれを行うことができます。

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

そして、それは次のように私を残します:

New York City
New York
USA

Toronto
Ontario
Canada

しかし、私はPythonでこれをやりたい、と私はニューアークでの行の後、次の行を削除する方法を考え出すの問題を抱えています。私はニューアークを削除することができます。

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')

しかし、これは、残りの2行に対して何もしない、と私はその後、元のファイルを置き換えるために使用する必要が新しいファイルを作成します。

  1. どのように私は、Pythonでsedコマンドの機能をまねるについて行くことができますか?
  2. 私はそれから削除する必要があるファイル毎回作成し、交換する必要はありませんので、ファイルの編集中に行うにどのような方法は、ありますか?
ラファエルMedaer:

カウンターでは?ここにあります:

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)

編集:

私は最初の質問に答えました。FileInputクラスのサポートファイルの編集、こちらをご覧ください:ファイル内のテキストを検索および置換する方法は?ところで、私はまた、推薦インプレースので、それが標準出力をハイジャックしません。

おすすめ

転載: http://10.200.1.11:23101/article/api/json?id=388149&siteId=1