Убрать пустую строку python

Как удалить пустую строку в списке?

Затем я удаляю все знаки препинания и делаю это в списке.

Как мне удалить или игнорировать пустую строку?

7 ответов

Ты можешь использовать filter , с None в качестве ключевой функции, которая отфильтровывает все элементы, которые False ish (включая пустые строки)

>>> lst = ["He", "is", "so", "", "cool"] >>> filter(None, lst) ['He', 'is', 'so', 'cool'] 

Обратите внимание, что filter возвращает список в Python 2, но генератор в Python 3. Вам нужно будет преобразовать его в список в Python 3 или использовать решение для понимания списка.

False значения ish включают в себя:

False None 0 '' [] () # and all other empty containers 

Вы можете отфильтровать это так

orig = ["He", "is", "so", "", "cool"] result = [x for x in orig if x] 

Или вы можете использовать filter , В питоне 3 filter возвращает генератор, таким образом list() превращает это в список. Это работает также в Python 2.7

result = list(filter(None, orig)) 

Вы можете использовать понимание списка:

cleaned = [x for x in your_list if x] 

Хотя я бы использовал регулярное выражение, чтобы извлечь слова:

>>> import re >>> sentence = 'This is some cool sentence with, spaces' >>> re.findall(r'(\w+)', sentence) ['This', 'is', 'some', 'cool', 'sentence', 'with', 'spaces'] 

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

>>> "He is so . cool!".replace(".", "").split(" ") ['He', 'is', 'so', '', 'cool!'] 

Дело в том, что вы используете .split(» «) разделить на символы пространства. Однако, если вы пропустите аргумент split , Бывает:

>>> "He is so . cool!".replace(".", "").split() ['He', 'is', 'so', 'cool!'] 

Если sep не указан или None, применяется другой алгоритм разделения: серии последовательных пробелов рассматриваются как один разделитель, и результат не будет содержать пустых строк в начале или конце, если строка имеет начальный или конечный пробел.

Таким образом, вам действительно не нужно беспокоиться о других ответах (кроме Blender, что является совершенно другим подходом), потому что split может сделать эту работу за вас!

Читайте также:  Get free disk space python

Источник

Удалить пустые строки из списка строк в Python

В этом посте мы обсудим, как удалить пустые строки из списка строк в Python.

1. Использование filter() функция

Рекомендуемое решение — использовать встроенную функцию filter(function, iterable) , который строит iterator из элементов iterable для которого указано функция возвращает истину. Если функция None , предполагается тождественная функция, т. е. все элементы iterable, которые являются ложными, удаляются. Вот рабочий пример с использованием фильтров:

Вы также можете пройти len функция для фильтрации пустых строк из списка, как показано ниже:

2. Использование понимания списка

Вы также можете использовать понимание списка для удаления пустых строк из списка строк. Понимание списка состоит из выражения, за которым следует цикл for, за которым следует необязательный цикл for или оператор if, заключенные в квадратные скобки. [] . Обратите внимание, что это решение медленнее, чем подход с фильтром.

3. Использование join() с split() функция

Выражение ‘ ‘.join(iterable).split() может использоваться для фильтрации пустых значений из итерации. ‘ ‘.join(list) эффективно объединить список строк, разделенных пробелом. затем split() Функция вызывается для результирующей строки, которая возвращает список строк, в которых последовательные пробелы считаются одним разделителем.

4. Использование list.remove() функция

The list.remove(«») удаляет только первое вхождение пустой строки из списка. Чтобы удалить все вхождения пустой строки из списка, вы можете воспользоваться тем фактом, что она вызывает ValueError когда он не может найти указанный элемент в списке. Идея состоит в том, чтобы многократно вызывать remove() функционировать до тех пор, пока не возникнет ValueError исключение. Это показано ниже:

Источник

Оцените статью