如何检查列表中是否存在空字符串

7
假设我有一个列表['', 'Tom', 'Jane', 'John', '0'],我写了以下代码来检查它是否包含空字符串'':
if any('' in s for s in row[1:]):
        print "contains empty string, continue now"
        continue

我希望这只选取空字符串,但它也会选择包含'0'的列表。'0'字符串是有效的,我不想将其过滤掉。那么如何在python列表中检查空字符串?


s == ''(或者更简单地说 if '' in row - njzk2
5个回答

13

您可以检查列表中是否存在元素''

if '' in lst:
     # ...

if '' in lst[:1]:  # for your example
     # ...

这里是一个例子:

>>> lst = ['John', '', 'Foo', '0']
>>> lst2 = ['John', 'Bar', '0']
>>> '' in lst
True
>>> '' in lst2
False

4
any('' in s for s in row[1:])

对于列表row[1:]中的每个字符串s,检查空字符串是否是它的子串。这显然总是成立的。您的意思是

any(s == '' for s in row[1:])

但是这可以简写为:
'' in row[1:]

4

不要使用:

if any('' in s for s in row[1:]):

将您的条件更改为:

if '' in your_list:

其中your_list是您正在检查的列表的名称。


3

让我们以你的例子为例,并给这个列表起一个名称:

list = ['', 'Tom', 'Jane', 'John', '0']
if '' in list:
    do something

这就是你所需要的全部!

1
这个怎么样:
if any(len(x) == 0 for x in row):
    print("contains empty string, continue now")
    continue

4
如果row的某些元素不是字符串,这可能会导致误报。 - Fred Foo
我必须补充说明,如果“row”是一个字符串,我的答案会给出一个错误的结果,因此是否足够严重以至于需要点踩是值得商榷的。 - Fred Foo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接