Reputation: 4290
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?
Upvotes: 20
Views: 25096
Reputation: 3922
next(s for s in list_of_string if s)
Thanks to Stephan202 for this Python 3 version.
Upvotes: 34
Reputation:
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.
Upvotes: 0
Reputation: 19872
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()
Upvotes: 3
Reputation: 342463
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
Upvotes: 1
Reputation: 319661
def get_nonempty(list_of_strings):
for s in list_of_strings:
if s:
return s
Upvotes: 4
Reputation: 101236
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.
Upvotes: 7