Удаление пустых элементов из массива в Python

with open("text.txt", 'r') as file:
    for line in file:
        line = line.rstrip('n' + '').split(':')
        print(line)

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

пустые списки отображаются как [''] - Как вы можете видеть по четвертой строке, я попытался явно удалить их. Пустые элементы были однажды заполнены новыми символами строки, они были успешно удалены используя .rstrip('n').

Edit:

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

1 ответов


поскольку я не вижу вашей точной строки, трудно дать вам решение, которое идеально соответствует вашим требованиям, но если вы хотите получить все элементы в списке, которые не являются пустыми строками, то вы можете сделать это:

>>> l = ["ch", '', '', 'e', '', 'e', 'se']
>>> [var for var in l if var]
Out[4]: ['ch', 'e', 'e', 'se']

вы также можете использовать filter С None или bool:

>>> filter(None, l)
Out[5]: ['ch', 'e', 'e', 'se']
>>> filter(bool, l)
Out[6]: ['ch', 'e', 'e', 'se']

если вы хотите избавиться от списков с пустыми строками, то для вашего конкретного примера вы можете сделать следующее:

with open("text.txt", 'r') as file:
    for line in file:
        line = line.rstrip('\n' + '').split(':')
        # If line is just empty
        if line != ['']:
            print line