티스토리 뷰
Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.
Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.
아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.
How to delete a specific line in a file?
어떻게 하면 Python을 사용하여 파일에서 특정 줄을 삭제할 수 있을까요?
문제 내용
Let's say I have a text file full of nicknames. How can I delete a specific nickname from this file, using Python?
예를 들어, 별명으로 가득한 텍스트 파일이 있다고 가정해봅시다. Python을 사용하여 해당 파일에서 특정 별명을 삭제하는 방법은 무엇일까요?
높은 점수를 받은 Solution
First, open the file and get all your lines from the file. Then reopen the file in write mode and write your lines back, except for the line you want to delete:
먼저 파일을 열고 파일에서 모든 줄을 가져옵니다. 그런 다음 파일을 쓰기 모드로 다시 열고, 삭제하려는 줄을 제외한 나머지 줄을 씁니다.
with open("yourfile.txt", "r") as f:
lines = f.readlines()
with open("yourfile.txt", "w") as f:
for line in lines:
if line.strip("\n") != "nickname_to_delete":
f.write(line)
You need to strip("\n")
the newline character in the comparison because if your file doesn't end with a newline character the very last line
won't either.
"\n" 개행 문자를 비교할 때 비교 문자열에서 strip("\n")을 호출해주어야 합니다. 왜냐하면 파일이 개행 문자로 끝나지 않는 경우 가장 마지막 줄도 개행 문자를 포함하지 않기 때문입니다.
가장 최근 달린 Solution
This is a "fork" from @Lother's answer (which I believe that should be considered the right answer).
다음은 @Lother의 답변에서 시작한 "fork"입니다. (내 생각에 이것이 올바른 답변으로 고려되어야 합니다.)
For a file like this:
다음과 같은 파일의 경우:
$ cat file.txt
1: october rust
2: november rain
3: december snow
This fork from Lother's solution works fine:
Lother의 솔루션에서 파생된 이 방법은 잘 작동합니다.
#!/usr/bin/python3.4
with open("file.txt","r+") as f:
new_f = f.readlines()
f.seek(0)
for line in new_f:
if "snow" not in line:
f.write(line)
f.truncate()
Improvements:
개선 사항:
with open
, which discard the usage off.close()
- more clearer
if/else
for evaluating if string is not present in the current line
f.close()를 사용하지 않아도 되는 with open
현재 줄에 문자열이 없는 경우를 평가하기 위한 더 명확한 if/else문
출처 : https://stackoverflow.com/questions/4710067/how-to-delete-a-specific-line-in-a-file
'개발 > 파이썬' 카테고리의 다른 글
파이썬에서 딕셔너리 확장하기 (0) | 2022.12.28 |
---|---|
리스트에서 첫 번째 아이템 제거하기 (0) | 2022.12.26 |
리스트에 있는 항목들을 하나의 문자열로 연결하기 (0) | 2022.12.25 |
리스트 내포 vs. 람다 + 필터 (0) | 2022.12.25 |
다른 파일에서 변수 가져오기 (0) | 2022.12.24 |