Как удалить пустые списки из другого списка?

После прохождения текста через этот код:

import re


def text_manipulator(text):
    paras = re.split('\n|\n ', text)
    item_number = 0
    for item in paras:
        item_replace = re.split('(?<=[.!?]) +', item)
        paras[item_number] = item_replace
        item_number += 1
    fixed_paras = [x for x in paras if x]
    return fixed_paras

Я остался с этим.

[["Not a postal worker, but I'm good friends with the one on my route,"], [''], ['He has helped me through some tough times (just a nice guy to talk to)'], [''], ['I often offer him a cold gallon of water or a energy drink, he seems to really enjoy.', 'He is a real down to earth guy.']]

Что я могу сделать иначе, чтобы остаться с этим?:

[["Not a postal worker, but I'm good friends with the one on my route,"], ['He has helped me through some tough times (just a nice guy to talk to)'], ['I often offer him a cold gallon of water or a energy drink, he seems to really enjoy.', 'He is a real down to earth guy.']]

заранее спасибо

1 ответ

Решение

Согласно документам для any(iterable):

Возвращение Trueесли какой-либо элемент итерации истинен. Если итерация пуста, вернитеFalse.

Следовательно, когда список строк передается в Any и если все элементы в списке являются пустыми строками, он вернет False поскольку пустая строка эквивалентна False.

Итак, в вашем коде замените вторую последнюю строку на:

fixed_paras = [x for x in paras if any(x)]

также удалит списки с пустыми строками.

Примечание. Этот ответ основан на комментарии juanpa.arrivillaga.

Другие вопросы по тегам