Как мне сделать каждое предложение во вложенном списке?
Я работаю с текстовым файлом, который выглядит следующим образом; (Слова на шведском)
['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", где я начну с нового подсписка.
Некоторые идеи о том, как это сделать? Как я мог сделать это рекурсивным?
1 ответ
Это не естественно рекурсивный процесс; это итеративно. Простой цикл сделает эту работу.
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)
Поскольку триггер для каждого добавления является началом предложения, у вас еще есть одно предложение, которое нужно добавить. Я оставлю эту часть для вас, чтобы сделать.:-)