2017-11-20 5 views
0

텍스트 파일이 여러 섹션으로 구성되어 있습니다. 섹션은 항상 비 공백으로 시작되었습니다. 하위 섹션은 항상 공간으로 시작되었습니다. input.txt를 기반으로 다음과 같은 결과가 나옵니다. 이 예제에서는 "101"을 검색하려고하고 101이 섹션 또는 하위 섹션에 나타나는 경우 하위 섹션이있는 섹션을 표시하려고합니다. 섹션을 구문 분석하고 동적 변수에 저장하려고합니다. 하지만 섹션 변수를 동적으로 저장하는 방법을 모르겠습니다.Python3 : 동적 변수를 사용하여 텍스트 구문 분석 및 섹션 검색 ...

를 Input.txt

test1 text101 
    aaa 
    bbb 
    ccc 

test2 text101 
    aaa 
    bbb 
    ccc 
    ddd 101 

test3 text101 - 123 

test4 text123 
    aaa 
    bbb 
    ccc 
    ddd 101 

test5 text456 
    aaa 
    bbb 
    ccc 

test6 101 
    qqq 
    ppp 

test7 text101 - 123 
test8 text102 - 123 
Test9 text101 - 123 
Test10 text102 - 123 

파이썬 3.0 코드 :

find_txt = '101' 
result = [] 
f = open(r'\\input.txt') 
for line in f: 
    if (line[:1]!=' '): 
     result.append(line) 

print ('Result:') 
for element in result: 
    if find_txt in element: 
     print (element, end='') 

출력 :

test1 text101 
    aaa 
    bbb 
    ccc 

test2 text101 
    aaa 
    bbb 
    ccc 
    ddd 101 

test3 text101 - 123 

test4 text123 
    aaa 
    bbb 
    ccc 
    ddd 101 

test6 101 
    qqq 
    ppp 

test7 text101 - 123 

Test9 text101 - 123 
+0

"동적 변수"에 저장하는 대신 사전에 저장하십시오! – alfasin

답변

1
내가 이럴 문제에 더 파이썬 솔루션입니다 뭔가 다른 게 좋을 것

: 파일을 섹션으로 나누고 원하지 않는 내용을 필터링하십시오. 알고리즘이 같은 것입니다 :

  1. 변수에 (read 기능) 전체 파일을 읽기 (의이 content을 가정 해 봅시다). 문자열 변수가됩니다. Refer: Doc
  2. 문자열을 적절한 정규식 (공백없는 시작 행으로 나눈 값)으로 분할하여 하위 섹션을 포함하는 섹션으로 나눕니다. Refer: How to use regex to split string. 문자열 목록이 있습니다.
  3. 목록 이해를 사용하여 원치 않는 콘텐츠를 필터링합니다. 목록이 있습니다. Example: Here
  4. join 문자열 기능을 사용하여 새 줄 문자와 목록을 연결하십시오. Example: Here

행운을 빕니다.

ps. 코드를 제공 할 수는 있지만 우선 먼저 해결해야 할 일이 있습니다.