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.