In Python I have a list of strings, some of which may be the empty string. What\'s the best way to get the first non-empty string?
Based on your question I'll have to assume a lot, but to "get" the first non-empty string:
(i for i, s in enumerate(x) if s).next()
which returns its index in the list. The 'x' binding points to your list of strings.
def get_nonempty(list_of_strings):
for s in list_of_strings:
if s:
return s
to get the first non empty string in a list, you just have to loop over it and check if its not empty. that's all there is to it.
arr = ['','',2,"one"]
for i in arr:
if i:
print i
break
next(s for s in list_of_string if s)
Edit: py3k proof version as advised by Stephan202 in comments, thanks.
To remove all empty strings,
[s for s in list_of_strings if s]
To get the first non-empty string, simply create this list and get the first element, or use the lazy method as suggested by wuub.
Here's a short way:
filter(None, list_of_strings)[0]
EDIT:
Here's a slightly longer way that is better:
from itertools import ifilter
ifilter(None, list_of_strings).next()