2012-02-01 5 views
1

pdf에서 변환 된 입력 .txt 파일이 있습니다.
또한 일반적으로 입력 파일에있는 것으로 알려진 50 개의 개요 단어 (키워드)가 있습니다.
50 개의 개요 단어 각각에 대해 하나의 출력 파일을 만들었으며 그 목적은 입력에서 찾은 개요 단어에 따라 입력 파일 .txt 파일의 내용을 관련 출력 파일에 쓰는 방법입니다.파이썬에서 파일에 쓸 때 내용이 잘못 나눠짐

개요 단어는 텍스트 전체에서 찾을 수 있지만 줄 바꿈 문자 앞에 줄 바꿈 문자가 오는 사실로 식별되는 '제목'을 구체적으로 타겟팅합니다.

t = re.search("\nAbduction\n",content, re.I) 

그러나 나는 더 이런 식으로 가능한 제목의 각각에 대해 49이 : 내가 처음 윤곽 단어를 예를 들어, 정규 표현식을 사용합니다. 이걸 알고 있듯이 t은 값을 반환하지 않을 수도 있습니다. 가능한 모든 제목에 대해 값을 반환하려면 어떻게해야합니까?
두 번째 질문 : 특정 제목이 식별되면 다른 제목 (또는 EOF)이 발견 될 때까지 해당 출력 파일에 이어지는 텍스트를 출력해야합니다. 어떻게해야합니까?

어떤 도움을 환영합니다.

[편집]이 질문의 텍스트는 크게 재구성되어 재구성되었습니다. 그런 무거운 편집에 대한 사과. 원문에 가깝게 지내는 것이 더 좋지만,이 경우에는 더 무거운 손으로하는 것이 도움이되는 것처럼 보입니다 ... 이전 버전을 확인하거나 그렇지 않으면 편집을 되돌립니다!

[재 편집]은 (답변으로 게시 된 텍스트 OP에서)
.txt 파일의 샘플은 같다 :

Abduction 

Definition 
Abduction is a form of reasoning , sometimes described 
as “deduction in reverse,” Abduction whereby given a rule that 
“A follows from B” and the observed result of “A” we 
infer the condition “B” of the rule. More generally, 
given a theory, T , modeling a domain of interest and 
an observation, “A,” we infer a hypothesis “B” such that 

Accuracy 

Definition 
Accuracy refers to a measure of the degree to which the 
predictions of a (cid:55)model match the reality being mod. 

그것은을 포함하여 파일의 끝에 같은거야 50 타이틀. 이미 각 타이틀 이름에 대한 파일을 만들었습니다. 나는 다음과 같은 함수를 작성했습니다.

def TextBetween(self, s, leader, trailer): 
    end_of_leader = s.index(leader) + len(leader) 
    if trailer == " ": 
     return s[end_of_leader:] 
    else : 
     start_of_trailer = s.index(trailer, end_of_leader) 
     return s[end_of_leader:start_of_trailer] 

이것은 지도자와 트레일러 사이의 컨텐츠를 계산, 그래서 난 내가 언급 정규식을 사용하는 올바른 title.Because을 찾기 위해 빈 공간을 사용하고자하는 지도자와 트레일러를 결정하면 문제는 내 question.I 각 타이틀에 대해 50 개의 정규 표현식을 만들었고 파일에 쓸 때이를 사용하고 싶지만 어떻게 성취하는지 알지 못합니다.

+0

원하는 것을 더 명확히하십시오. –

답변

1

당신은 input.txt를 파일의 샘플을 게시하는 경우 귀하의 질문에 명확하게 것이지만,이 코드는 당신이 뭘 하려는지 수 있습니다 : 이것은의 각 섹션에 대해 하나 개의 파일을 만들 것입니다

keywords = ["Abduction", "Foobar"] 
inf = open("infile.txt") 
outf = None 
for l in inf: 
    if l[:-1] in keywords: 
     if outf != None: 
      outf.close() 
     outf = open(l[:-1] + ".txt", "w") 
    elif outf != None: 
     outf.write(l) 

을 문서는 그 앞에 오는 키워드의 이름을 따서 명명됩니다. 내가 제대로 해석하고있어 당신은 두 개의 출력 파일, Abduction.txt라는 하나 Foobar.txt라는 한 텍스트의 해당 섹션에 각각 종료됩니다

Abduction 
Lorem ipsum dolor sit amet, consectetur adipisicing elit, 
sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. 

Foobar 
Ut enim ad minim veniam, quis nostrud exercitation ullamco 
laboris nisi ut aliquip ex ea commodo consequat. Duis aute 
irure dolor in reprehenderit in voluptate velit esse cillum 

같은 파일이 보인다 그래서 경우. 귀하의 특정 응용 프로그램이 더 많은 작업을 필요로 하겠지만 이것은 올바른 방향으로 당신을 얻을 것입니다.

관련 문제