Simon D
Simon D

Reputation: 4290

Get first non-empty string from a list in python

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

Answers (6)

Wojciech Bederski
Wojciech Bederski

Reputation: 3922

next(s for s in list_of_string if s)

Thanks to Stephan202 for this Python 3 version.

Upvotes: 34

yason
yason

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

Steve Losh
Steve Losh

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

ghostdog74
ghostdog74

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

SilentGhost
SilentGhost

Reputation: 319661

def get_nonempty(list_of_strings):
    for s in list_of_strings:
        if s:
            return s

Upvotes: 4

sykloid
sykloid

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

Related Questions