programing

파일 내용 내 문자열 바꾸기

testmans 2023. 7. 29. 08:15
반응형

파일 내용 내 문자열 바꾸기

어떻게 파일을 열 수 있죠, 스터드.txt, 그런 다음 "A"의 발생을 "오렌지"로 바꾸시겠습니까?

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)

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), 에서 보여준 것처럼 한 줄씩 처리하는 방식을 선호합니다. 물론 입력과 출력에 두 개의 별개의 파일을 사용해야 합니다.

비슷한 것

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)

만약 당신이 리눅스에 있고 단지 단어를 바꾸고 싶다면.dog와 함께cat할 수 있는 일:

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!

원본 게시물: https://askubuntu.com/questions/20414/find-and-replace-text-within-a-file-using-commands

가장 쉬운 방법은 정규 표현식을 사용하여 파일의 각 행에 대해 반복('A'가 저장될 위치)하려고 한다고 가정할 수 있습니다.

import re

input = file('C:\full_path\Stud.txt', 'r')
#when you try and write to a file with write permissions, it clears the file and writes only #what you tell it to the file.  So we have to save the file first.

saved_input
for eachLine in input:
    saved_input.append(eachLine)

#now we change entries with 'A' to 'Orange'
for i in range(0, len(old):
    search = re.sub('A', 'Orange', saved_input[i])
    if search is not None:
        saved_input[i] = search
#now we open the file in write mode (clearing it) and writing saved_input back to it
input = file('C:\full_path\Stud.txt', 'w')
for each in saved_input:
    input.write(each)

언급URL : https://stackoverflow.com/questions/4128144/replace-string-within-file-contents

반응형