简体   繁体   中英

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?

next(s for s in list_of_string if s)

编辑:由Stephan202在评论中建议的py3k校对版,谢谢。

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.

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

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()

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

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM