2016-09-15 2 views
0

여러 텍스트 파일 중에서 특정 단락을 구문 분석하고 목록에 저장하려고합니다. 파이썬에서 텍스트 파일을 분석하는 단락?

MODEL NUMBER: A123 

MODEL INFORMATION: some info about the model 

DESCRIPTION: This will be a description of the Model. It 
could be multiple lines but an empty line at the end of each. 

CONCLUSION: Sold a lot really profitable. 

지금 내가 ('설명'과 같은) 여러 줄 무언가가 발생할 때 그 한 줄,하지만이 문제가 발생하고있는 정보를 당길 수 : 모든 텍스트 파일이 일부 유사한 형식을 갖습니다. 설명 길이는 알 수 없지만 결국에는 빈 줄 ('\ n'을 사용한다는 뜻)을 갖게됩니다. 그 가장 좋은 방법 경우

import os 
dir = 'Test' 
DESCRIPTION = [] 
for files in os.listdir(dir): 
    if files.endswith('.txt'): 
     with open(dir + '/' + files) as File: 
      reading = File.readlines() 
      for num, line in enumerate(reading): 
       if 'DESCRIPTION:' in line: 
        Start_line = num 
       if len(line.strip()) == 0: 

는 나도 몰라,하지만 난 if len(line.strip()) == 0:으로 일을하려고 한 것은 빈 줄의 목록을 만든 다음 첫 번째 큰 값을 찾을 수 있습니다 : 이것은 내가 지금까지 무엇을 가지고 Start_Line보다. 나는이 Bisect을 봤다. 내가 할 내 데이터를 원하는 결국

은 내가 print Description

['DESCRIPTION: Description from file 1', 
'DESCRIPTION: Description from file 2', 
'DESCRIPTION: Description from file 3,] 

감사를 말한다면.

+0

내가 생각할 수있는 가장 쉬운 방법은 (DESCRIPTION :)과 같은 태그로 시작하는 줄을 확인하고 다른 알려진 태그가 나타날 때까지 해당 태그의 다중 행 설명에 속한다고 가정 할 수 있습니다. – Sanju

답변

0

정규 표현식입니다. 그것에 대해 이런 식으로 생각 : 당신은 당신이 맛 찾을 수 조각으로 모든 파일 절감 할 수 있도록 패턴이 : 문자열을 가지고

re.split은 당신의 친구

"대문자 다음에 줄 바꿈을"

문자열로
"THE 
BEST things 
in life are 
free 
IS 
YET 
TO 
COME" 

:

p = "THE\nBEST things\nin life are\nfree\nIS\nYET\nTO\nCOME" 
c = re.split('\n(?=[A-Z])', p) 

목록 C를 생산

['THE', 'BEST things\nin life are\nfree', 'IS', 'YET', 'TO', 'COME']

나는 당신이 거기에서 그것을 취할 수 있다고 생각한다. 이것은 각 문자열이 자신의 섹션 인 각각의 문자열 목록으로 파일을 분리 할 것이고, 거기에서 "DESCRIPTION"요소를 찾아서 저장할 수있다. 당신은 당신이 각 부분을 분리하는 것을 볼 수 있습니다. 중요한 것은 내가 정규식을 설정 한 방식으로 PATTERN "개행 문자와 대문자"를 인식하지만 개행 문자 다음에 CUTS 문자가 있으므로 대괄호 밖에있는 이유입니다.

관련 문제