2017-11-14 1 views
1

나는 파일을 만들고, 쓰고, 그 다음에 문자열을 대체하고 싶습니다. 교체를 제외하고는 모든 것이 작동합니다. 나는 re, str.replace 등을 시도했다. 나는 그것을 이해할 수 없다.Python : 텍스트 파일을 만들고, 쓰고, 문자열을 바꿉니다.

target_string = 'foo4bar44foobar444foobar, foo4bar' 
file = open(source_file, "w+") 
file.write(target_string) 
target_string = re.sub('4', '55', target_string) 

Desired Output: foo55bar5555foobar555555foobar, foo55bar 

감사합니다.

답변

1

당신이 잘못 가지고 무엇을 공식 용어가 codesequencing입니다.

을 수행하기 전에 target_string을 파일에 씁니다. 당신이 files 작업 할 때 프로그램이 error을 던져 것처럼

target_string = 'foo4bar44foobar444foobar, foo4bar' 
file = open(source_file, "w+") 
target_string = re.sub('4', '55', target_string) 
file.write(target_string) 
또한

이, 당신이 이상적으로 with 문을 사용한다 : 당신이 file에 수정 된 stringwrite 있도록 주위에 이러한 작업을 전환해야 file.close() (나중에하겠습니다)라고 전화하기 전에 문제가 발생할 것입니다.

그래서, 최종 code과 같이 보일 것입니다 : 여기

target_string = 'foo4bar44foobar444foobar, foo4bar' 
with open(source_file, "w+") as f: 
    target_string = re.sub('4', '55', target_string) #could be moved out of with 
    file.write(target_string) 
+0

헥타르 내 이해가 뒤로 .. 나는 그것을 편집하기 전에 문자열을 배치해야한다고 생각 .. 감사합니다 .. 그 감각을 많이 만든다 –

+0

@ chrissmit.yam90 그것의 쉬운 실수에 대해 걱정하지 마십시오. 하다. 이 문제를 해결하기 위해 '수락'하십시오. (내 대답 옆에있는 회색 체크 -> 녹색) –

+0

5 분 후에 .. 기다리라는 메시지가 나타납니다. –

1

파일에 쓰기 전에 문자열을 변경해야합니다.

마지막 두 줄을 전환하십시오.

1

당신이 시도 할 수 있습니다 :

target_string = 'foo4bar44foobar444foobar, foo4bar' 
final_string = '' 
seen_val = False 
for i in target_string: 
    if i.isdigit(): 
     if seen_val: 
     final_string += str(int(i)+1)*2 
     else: 
      final_string += str(int(i)+1)*2 
      seen_val = True 
    else: 
     final_string += i 
     seen_val = False 

출력 :

'foo55bar5555foobar555555foobar, foo55bar' 
1

(또한 텍스트 파일의 보너스 백업 않음) : 백업을 P

import fileinput 

# CREATE/WRITE 
f = open("test.txt","w+") 
f.write("foo4bar44foobar444foobar, foo4bar") 
f.close() 

# REPLACE 
with fileinput.FileInput("test.txt", inplace=True, backup='.bak') as file: 
    for line in file: 
     print(line.replace("4", "55"), end='') 

필요하지 않은 경우를 파일을 그냥 비교 backup='.bak' 양식을 인수로 전달 fileinput.FileInput

2

대상 문자열을 작성하기 전에 시도해보십시오 대체 및 clo 파일 :

target_string = 'foo4bar44foobar444foobar, foo4bar' 
file = open(source_file,"w") 
target_string= re.sub('4', '55', target_string) 
file.write(target_string) 
file.close() 

OR 

target_string = 'foo4bar44foobar444foobar, foo4bar' 
with open(source_file,"w") as f: 
    target_string = re.sub('4', '55', target_string) 
    f.write(target_string) 
1

텍스트를 편집하기 전에 파일에 쓰려고합니다.

열기, 편집, 작성해야합니다.

관련 문제