2015-05-20 4 views
0

У меня есть следующий вывод, но я хочу удалить пустые списки. Как я могу это сделать? Кажется, что единственная цитата из списка делает кажется, что в списке есть что-то.Проверить наличие пустого списка

[{'Segment': {'Price': 305, 'Mw': 13, '@Number': '1'}}] 
[{'Segment': {'Price': 258.43, 'Mw': 46.9, '@Number': '1'}}] 
[''] 
[''] 
[''] 

Я попытался использовать приведенный ниже код, но это не сработало.

if not a: 
    print "List is empty" 
+0

Какое возможно содержание списка? Каждый список содержит только один элемент? Есть ли другие «пустые» значения, которые вы хотите устранить, или просто «['']'? – augurar

+0

Мне просто нужно устранить [''] Спасибо – Alex

ответ

2

Ваш список не пуст, на нем есть пустая строка. Вы можете использовать ''.join и проверить, как ответил:

if not ''.join(a): 
    do your thing 

Я думаю, вы можете использовать any, а на этом, если ваш список, несомненно, есть только пустые строки.

if any(a): 
    do your thing 
+0

Я думал об этом, но 'any()' также возвращает True в действительно пустой список. – gojomo

+0

@gojomo Вы имеете в виду 'any ([])' будет True? Я думаю, что 'all ([])' is True, а не 'any'. Проблема, которую я вижу с любым, заключается в том, что список допускает другие значения как [0] и т. Д., Где' any' ошибочно. – sagarchalise

+0

Да, конечно, я все еще думал в режиме вопроса, пытаясь вызвать условие «пустое или заполненное с-пуст» и только что проверил 'all()'. Использование 'any()' для запуска положительного действия или 'not any()' для запуска ничего - там обработка (например, отбрасывание списка) должна работать. – gojomo

2

У вас был список с одной записью с пустой строкой. Это не пустой список. Best way to check if a list is empty - это правильный способ проверить пустой список.

Если вы хотите, чтобы проверить [ ''] вобще

if a == ['']: 
+0

Или 'if not a [0]:' – augurar

0

Python подсчитывает пустую строку в виде строки. Используйте регулярное выражение, если вам нужно, или просто:

if list[0] != '': 
    print(list) 

Включите это условие в цикл For, если необходимо.

+1

как насчет ls = ['', 1,2,3] –

0

Это то, что вы хотите?

old_list=[[{'Segment': {'Price': 305, 'Mw': 13, '@Number': '1'}}], 
    [{'Segment': {'Price': 258.43, 'Mw': 46.9, '@Number': '1'}}], [''], ['']] 

new_list = [] 

for i in old_list: 
    if i != ['']: 
     new_list.append(i) 

print new_list 
[[{'Segment': {'Price': 305, '@Number': '1', 'Mw': 13}}], [{'Segment': {'Price': 258.43, '@Number': '1', 'Mw': 46.9}}]] 
0

Могу ли я попробовать этот способ:

>>> def is_empty(ls): 
...  if all([not len(ls), not ls]): 
...   print "List is empty" 
...  else: 
...   print "List is not empty" 
... 
>>> is_empty([]) 
List is empty 
>>> is_empty([""]) 
List is not empty 
>>> is_empty([{'Segment': {'Price': 305, 'Mw': 13, '@Number': '1'}}]) 
List is not empty 
>>> 
0

Ваш список не пуст, он содержит пустую строку.

Если вы хотите, чтобы проверить, что список содержит элементы, которые не являются пустыми вы можете использовать либо any:

list = [ '' ] 
if any(list): 
    # List contains non-empty values 

или вы можете filter его, прежде чем использовать его, чтобы удалить все пустые строки:

list = [ '' ] 
list = filter(None, list) # Remove empty values from list 
if list: 
    # List contains items 
Смежные вопросы