Получить первую непустую строку из списка в Python - PullRequest
10 голосов
/ 16 июля 2009

В Python у меня есть список строк, некоторые из которых могут быть пустой строкой. Какой лучший способ получить первую непустую строку?

Ответы [ 6 ]

21 голосов
/ 16 июля 2009
next(s for s in list_of_string if s)

Редактировать: Py3K доказательство версия, как советует Stephan202 в комментариях, спасибо.

5 голосов
/ 16 июля 2009

Чтобы удалить все пустые строки,

[s for s in list_of_strings if s]

Чтобы получить первую непустую строку, просто создайте этот список и получите первый элемент или используйте ленивый метод, предложенный wuub.

3 голосов
/ 16 июля 2009

Вот короткий путь:

filter(None, list_of_strings)[0]

EDIT:

Вот немного более длинный способ, который лучше:

from itertools import ifilter
ifilter(None, list_of_strings).next()
3 голосов
/ 16 июля 2009
def get_nonempty(list_of_strings):
    for s in list_of_strings:
        if s:
            return s
0 голосов
/ 16 июля 2009

Исходя из вашего вопроса, мне придется многое предположить, но для «получения» первой непустой строки:

(i for i, s in enumerate(x) if s).next()

, который возвращает свой индекс в списке. Привязка 'x' указывает на ваш список строк.

0 голосов
/ 16 июля 2009

, чтобы получить первую непустую строку в списке, вам просто нужно перебрать ее и проверить, не пуста ли она. это все, что нужно сделать.

arr = ['','',2,"one"]
for i in arr:
    if i:
        print i
        break
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...