Openpyxl как отсечь полностью пустые строчки

Есть задача спарсить из Excel данные. Но по какой-то причине помимо необходимой мне информации, плодятся также и значения None (хотя использую data_only = True). Причём если я руками зайду и удалю все не нужные строки, то всё работает замечательно. В чём ошибка кода? Почему он может плодить None там, где никаких данных нет? Из за чего это вообще происходит? Для парсинга использую следующий код:

book = openpyxl.load_workbook(filename=file_name, data_only=True)
sheet = book.active
rng = [[redact_str(xx.value) for xx in x] for x in sheet[f"a1{get_column_letter(sheet.max_column)}{sheet.max_row}"]]
book.close()
for i, val in enumerate(rng[0]):
    if val == 'Наименование нужного столбца 1':
        for val in rng[1:]:
            data["{Соответствующий ключ}"].append(val[i])
        if val == 'Наименование нужного столбца 2':
            for val in rng[1:]:
                data["{Соответствующий ключ}"].append(val[i])
        if val == 'Наименование нужного столбца 3':
            for val in rng[1:]:
                data["{Соответствующий ключ}"].append(val[i])
        if val == "Наименование нужного столбца 4":
            for val in rng[1:]:
                data["{Соответствующий ключ}"].append(val[i])

Из идей только костыль, например, после подобного кривого парсинга, проверять по индексу в каждом списке значение None и если абсолютно каждое == "None", то просто удалять со всех списков этот индекс. Суть в том, что необходимо заложить также человеческий фактор, например, если человек заполнит лишь 1 столбец из 4, условно, нужно получить в 1 списке значение, а None для остальных будет уже нормальной ситуацией, которую я обработаю. Когда я руками удаляю строки из Excel, то как раз таки и происходит ситуация выше, которую я добиваюсь, но интересует вопрос, можно ли сделать парсинг изначально без костылей, скорее всего в openpyxl что-то подобное должно быть заложено, вот только я не нашёл, сколько не гуглил.


Ответы (0 шт):