어떻게 특정 라인과 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

그러나, 나는 파이썬에서이 작업을 수행하고자, 나는 뉴 어크에 선 후, 다음 줄을 삭제하는 방법을 알아내는 문제에 봉착했습니다. 나는 뉴 어크을 삭제할 수 있습니다 :

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

그러나 나머지 두 줄을 위해 아무것도하지 않는다, 나는 다음 원본 파일을 대체하기 위해 사용해야 할 새 파일을 만듭니다.

  1. 어떻게 파이썬으로 나오지도 명령의 기능을 mimicing에 대해 갈 수 있나요?
  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 함수 지원 파일 편집, 여기 봐주십시오 : 어떻게 검색하고 파일에서 텍스트를 교체하려면? BTW, 나는 또한 추천 에서 현재 위치에 있기 때문에 그것은 표준 출력을 납치하지 않습니다

추천

출처http://10.200.1.11:23101/article/api/json?id=388145&siteId=1