Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python으로 텍스트 파일에서 특정 문자열 찾아 바꾸는 방법

Python에서는 파일을 한 줄씩 읽으면서 문자열의 replace() 메서드를 적용하는 방식으로, 텍스트 파일 안의 특정 단어나 문구를 간단히 다른 내용으로 교체할 수 있습니다.

다음 예제는 'foo.txt' 파일을 읽어 들여 'Poetry'라는 단어를 모두 'Prose'로 바꾼 뒤, 그 결과를 새로운 파일 'bar.txt'에 저장하고 다시 화면에 출력하는 과정을 보여줍니다.

예제 코드

f1 = open('foo.txt', 'r')
f2 = open('bar.txt', 'w')
for line in f1:
    print line
    f2.write(line.replace('Poetry', 'Prose'))
f1.close()
f2.close()

f2 = open('bar.txt', 'r')
for line in f2:
    print line,

실행 결과

위 코드를 실행하면 다음과 같은 출력을 얻을 수 있습니다.

Poetry is often considered the oldest form of literature. Poetry today is usually
written down, but is still sometimes performed.
Prose is often considered the oldest form of literature. Prose today is usually
written down, but is still sometimes performed.

코드 동작 원리

  • open('foo.txt', 'r'): foo.txt 파일을 읽기 모드로 엽니다.
  • open('bar.txt', 'w'): bar.txt 파일을 쓰기 모드로 엽니다. 같은 이름의 파일이 이미 존재하면 기존 내용이 삭제됩니다.
  • line.replace('Poetry', 'Prose'): 파일에서 한 줄씩 읽어온 문자열에서 'Poetry'를 'Prose'로 치환합니다.
  • f2.write(...): 치환된 내용을 bar.txt에 기록합니다.
  • close(): 모든 작업이 끝난 후 파일을 닫아 시스템 리소스를 해제합니다.

참고: Python 3 환경에서 실행하기

위 코드는 print를 문(statement) 형태로 사용하는 Python 2 문법입니다. 최신 Python 3 환경에서는 print() 함수를 사용해야 하며, with 문을 활용하면 파일을 자동으로 닫아주므로 더욱 안전하고 깔끔하게 작성할 수 있습니다.

with open('foo.txt', 'r') as f1, open('bar.txt', 'w') as f2:
    for line in f1:
        print(line, end='')
        f2.write(line.replace('Poetry', 'Prose'))

# 결과 확인
with open('bar.txt', 'r') as f2:
    for line in f2:
        print(line, end='')

이처럼 with 문을 사용하면 예외가 발생하더라도 파일이 자동으로 종료되므로, 실무에서는 이 방식을 사용하는 것이 권장됩니다.