[python] 파일 내용 내에서 문자열 바꾸기

Stud.txt 파일을 열고 “A”를 “Orange”로 바꾸려면 어떻게해야합니까?



답변

with open("Stud.txt", "rt") as fin:
    with open("out.txt", "wt") as fout:
        for line in fin:
            fout.write(line.replace('A', 'Orange'))


답변

같은 파일의 문자열을 바꾸고 싶다면 아마도 그 내용을 로컬 변수로 읽어 들인 다음 닫고 쓰기 위해 다시 열어야 할 것입니다 :

이 예제에서는 블록이 종료 된 후 파일을 닫는 with 문 을 사용 하고with 있습니다. 일반적으로 마지막 명령이 실행을 완료하거나 예외로 인해 파일이 닫힙니다 .

def inplace_change(filename, old_string, new_string):
    # Safely read the input filename using 'with'
    with open(filename) as f:
        s = f.read()
        if old_string not in s:
            print('"{old_string}" not found in {filename}.'.format(**locals()))
            return

    # Safely write the changed content, if found in the file
    with open(filename, 'w') as f:
        print('Changing "{old_string}" to "{new_string}" in {filename}'.format(**locals()))
        s = s.replace(old_string, new_string)
        f.write(s)

파일 이름이 다르면 단일 with명령문으로 더 우아하게이 작업을 수행 할 수 있다는 점을 언급 할 가치가 있습니다 .


답변

#!/usr/bin/python

with open(FileName) as f:
    newText=f.read().replace('A', 'Orange')

with open(FileName, "w") as f:
    f.write(newText)


답변

같은 것

file = open('Stud.txt')
contents = file.read()
replaced_contents = contents.replace('A', 'Orange')

<do stuff with the result>


답변

with open('Stud.txt','r') as f:
    newlines = []
    for line in f.readlines():
        newlines.append(line.replace('A', 'Orange'))
with open('Stud.txt', 'w') as f:
    for line in newlines:
        f.write(line)


답변

Linux를 사용 중이고 단어 dogcat다음 과 같이 바꾸려면 다음을 수행하십시오.

text.txt :

Hi, i am a dog and dog's are awesome, i love dogs! dog dog dogs!

Linux 명령 :

sed -i 's/dog/cat/g' test.txt

산출:

Hi, i am a cat and cat's are awesome, i love cats! cat cat cats!

원본 게시물 : /ubuntu/20414/find-and-replace-text-within-a-file-using-commands


답변

pathlib 사용 ( https://docs.python.org/3/library/pathlib.html )

from pathlib import Path
file = Path('Stud.txt')
file.write_text(file.read_text().replace('A', 'Orange'))

입력 및 출력 파일이 달랐다 경우에 당신은 두 개의 서로 다른 변수를 사용하는 것 read_text하고 write_text.

단일 교체보다 더 복잡한 변경을 원하면 결과를 read_text변수에 할당하고 처리하고 새 내용을 다른 변수에 저장 한 다음 새 내용을 다음을 사용하여 저장합니다.write_text .

파일이 큰 경우 메모리에서 전체 파일을 읽지 않고 Gareth Davidson이 다른 답변 ( https://stackoverflow.com/a/4128192/3981273 ) 에서 보여주는 것처럼 한 줄씩 처리하는 방법을 선호합니다. , 물론 입력 및 출력을 위해 두 개의 별개 파일을 사용해야합니다.