2011-08-30 4 views
2

에서 특정 문자열 (하지 선) 삭제 :내가 텍스트 파일에서 두 줄 텍스트 파일이 텍스트 파일 파이썬

<BLAHBLAH>483920349<FOOFOO> 
<BLAHBLAH>4493<FOOFOO> 

텍스트 파일에있는 유일한 것은 그게 전부입니다. 파이썬을 사용하여 텍스트 파일에 쓰기를하므로 각 줄에서 BLAHBLAH 및 FOOFOO를 제거 할 수 있습니다. 그것은 간단한 작업처럼 보이지만 내 파일 조작을 새로 고친 후에는 할 수없는 방법을 찾은 것 같습니다. 도움을 주시면 대단히 감사하겠습니다.

감사!

+4

파일 **은 실제로 ** XML입니까? 또는 HTML? 또는 XHTML? 그렇다면 ** 파일 **이 실제로 ** 어떻게 보이는지보다 구체적으로 질문을 ** 업데이트하십시오. 파일이 표준과 일치하는 경우이 작업을 수행하는 간단한 방법이 있습니다. –

+1

당신은 적어도 당신이 시도한 것을 보여줄 수 있습니까? – utdemir

답변

4

당신이 말하는대로 텍스트 파일이 있다면, 그리고 HTML/XML/뭔가 다른, 그냥 replace를 사용

for line in infile.readlines(): 
    cleaned_line = line.replace("BLAHBLAH","") 
    cleaned_line = cleaned_line.replace("FOOFOO","") 

및 출력 파일에 cleaned_line 물품.

3
f = open(path_to_file, "w+") 

f.write(f.read().replace("<BLAHBLAH>","").replace("<FOOFOO>","")) 
f.close() 

업데이트 (다른 ​​파일에 저장이) :

f = open(path_to_input_file, "r") 
output = open(path_to_output_file, "w") 

output.write(f.read().replace("<BLAHBLAH>","").replace("<FOOFOO>","")) 
f.close() 
output.close() 
+1

이렇게하면 수정 된 데이터가 기존 파일에 추가됩니다. – glglgl

+1

glglgl 외에도, 필자는 절대적으로 필요한 경우가 아니라면 일반적으로 입력 파일을 덮어 쓰는 것이 좋지 않은 형식이라고 생각합니다. 프로그램 어딘가에 버그가 있다면 어떨까요? – jozzas

1

정규 표현식 모듈 재를 생각해 보자. 와 <> 내의

result_text = re.sub('<(.|\n)*?>',replacement_text,source_text) 

문자열이 식별된다. 그것은 욕심이 없다. 즉 가능한 최소한의 부분 문자열을 받아 들일 것이다. 당신이 은 "< 1> 텍스트 < 2> 더 많은 텍스트가"는, 욕심 파서 에 걸릴 경우 예를 들어 "< 1> 텍스트 < 2>"하지만 비 욕심 파서 에 소요 "< 1> ""< 2> "".

물론 replacement_text는 ''이고 source_text는 파일의 각 줄입니다.

관련 문제