Логика цикла для использования двух списков при обработке текста в Python - PullRequest
0 голосов
/ 08 февраля 2019

Я работаю над разбором текстовых файлов.Каждый файл имеет разделы, которые мне нужно проверить и обновить при необходимости.Я читаю каждый файл и нахожу начало каждого интересующего меня раздела. Я помещаю номер строки каждого раздела в список, а все строки - в другой список.

Итак, я получаю, например:

l1=[7, 23, 45, 67, 89, 111, 133, 155]

l2 содержит все строки из файла

Строки, которые меня интересуют, начинаются с номера строки 7 и заканчиваютсяв 22, начинаются в 23 и заканчиваются в 44 и т. д.

Я хочу прочитать строки 7 - 22, проверить содержимое или обновить его и перейти к следующему.

IЯ очень плохо знаком с программированием, и я не могу заставить это работать должным образом.Иногда я подхожу близко, но на самом деле это не работает правильно.

Я пробовал два вложенных цикла for, цикл for и while, но безрезультатно.Я могу отслеживать индекс во внешнем цикле, но внутренний цикл никогда не работает должным образом, потому что индексы и списки содержимого связаны друг с другом.

Я знаю, что это элементарная проблема, но я не могу сделатьэто работает.Я также открыт для предложений для любых элегантных решений.Спасибо.

for i in range(len(Index)):
    j = i
    for j in range(Index[i+1]):
        tempList = Content[i: i+1]
        # do some validation here on the tempList 

1 Ответ

0 голосов
/ 08 февраля 2019

Итерируя по l1, у вас уже есть индекс, который вам нужен для ссылки на ваши данные, поэтому вам не нужен второй цикл.То, что вы хотите сделать, это обратиться к двум последовательным значениям в l1.Я сделал это, позвонив по номеру l1[i]:l1[i+1]

import numpy as np    

l1 = [7, 23, 45, 67, 89, 111, 133, 155]
data = np.random.randint(0, 9, 155)  # Your data here

for i in range(len(l1)-1):
    templist = data[l1[i]:l1[i+1]]
    # validation here

Я создал массив случайных данных, но вместо этого вы поместите туда свои.

...