Как удалить пустые списки из другого списка?
После прохождения текста через этот код:
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.