파일 내용 내 문자열 바꾸기
어떻게 파일을 열 수 있죠, 스터드.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
'programing' 카테고리의 다른 글
PHPExcel 병합 셀에서 텍스트 중심 지정 방법 (0) | 2023.07.29 |
---|---|
Android에서 기본적으로 응답: 프로그램 "노드"를 실행할 수 없음: 오류=2, 해당 파일 또는 디렉토리 없음 (0) | 2023.07.29 |
내 mariadb 데이터베이스에서 실행된 쿼리 수에 대한 통계를 찾는 방법은 무엇입니까? (0) | 2023.07.24 |
jQuery vs 문서.쿼리선택기모든. (0) | 2023.07.24 |
스프링 부트 종속성 기본 버전을 재정의하는 방법은 무엇입니까? (0) | 2023.07.24 |