В Python у меня есть список строк, некоторые из которых могут быть пустой строкой. Какой лучший способ получить первую непустую строку?
next(s for s in list_of_string if s)
Редактировать: Py3K доказательство версия, как советует Stephan202 в комментариях, спасибо.
Чтобы удалить все пустые строки,
[s for s in list_of_strings if s]
Чтобы получить первую непустую строку, просто создайте этот список и получите первый элемент или используйте ленивый метод, предложенный wuub.
Вот короткий путь:
filter(None, list_of_strings)[0]
EDIT:
Вот немного более длинный способ, который лучше:
from itertools import ifilter ifilter(None, list_of_strings).next()
def get_nonempty(list_of_strings): for s in list_of_strings: if s: return s
Исходя из вашего вопроса, мне придется многое предположить, но для «получения» первой непустой строки:
(i for i, s in enumerate(x) if s).next()
, который возвращает свой индекс в списке. Привязка 'x' указывает на ваш список строк.
, чтобы получить первую непустую строку в списке, вам просто нужно перебрать ее и проверить, не пуста ли она. это все, что нужно сделать.
arr = ['','',2,"one"] for i in arr: if i: print i break