2017-01-09 17 views
0

다음과 같은 텍스트 파일을 사용하고 있습니다. 스웨덴어로 된 단어입니다.각 문장을 중첩 목록으로 만들려면 어떻게해야합니까?

['1', 'Denna', '_', 'DET', 'DT', 'UTR|SIN|DEF', '2', 'DT', '_', '_\n'] 
['2', 'predestination', '_', 'NOUN', 'NN', 'UTR|SIN|IND|NOM', '7', 'SS', '_', '_\n'] 
['3', 'till', '_', 'ADP', 'PP', '_', '2', 'ET', '_', '_\n'] 
['4', 'en', '_', 'DET', 'DT', 'UTR|SIN|IND', '6', 'DT', '_', '_\n'] 
..... 

다양한 길이의 문장이 약 500 개 있습니다. 각 행은 한 단어를 설명합니다. 첫 번째 목록 요소는 문장에서 단어의 위치를 ​​나타냅니다.

각 문장 (각 문장마다 하나의 하위 목록)에 대한 항목에서 중첩 목록을 만들려면 프로그램이 필요합니다. 모든 새로운 문장은 위치 '1'로 시작하며 빈 줄로 구분됩니다. 현재 내 모든 라인이 하나의 목록에 있습니다.

내가 좋아하는 일을하고 싶습니다 :

l = [] 
for line in list: 
    if line[0] == '1': 
     l.append(line) 

... 그때 나는 새로운 하위 목록으로 시작 다시 '1'에 도달 할 때까지 다음의 모든 라인을 추가합니다.

어떻게해야합니까? 어떻게 재귀 적으로 만들 수 있습니까?

답변

0

이것은 자연스럽게 재귀적인 과정이 아닙니다. iterative. 간단한 루프가 작업을 수행합니다.

alla = [] 
forst = True 
for line in list: 
    if line[1] == '1': 
     # ny mening 
     if not forst: 
      alla.append(mening) 
     forst = False 
     mening = [] 

    mening.append(line) 

각 추가에 대한 트리거가 문장의 시작이므로 추가 할 문장이 하나 남습니다. 나는 당신이 할 수 있도록 그 부분을 남겨 둘 것입니다. :-)