2013-12-13 2 views
1

Если кто-то в обращении Pytables может быть, может дать мне подсказку об этом сложном выражении, которое не работает:комплекс итерации над PyTables

hdf5file = openFile("savedTable.h5", mode = 'r') 
tab = hdf5file.getNode("/Data") 

for i in xrange(1,10): 
      result = [result + 1 for x in tab.where("""(col1== 1) & (col2 == 1) & (col3== i) & ((col4 == 1) | (col5 == 1) | (col6 == 1) | (col7== 1))""")] 

Что Spyder, дает мне только это типичное сообщение «Invalid Синтаксис»

Специальное ВНИМАНИЕ к петле «ибо я в ....» и в запрос «... & (cOL3 == я)» я не знаю, если эта часть может быть сделана как что.

+0

Вместо 'Result = [результат + 1 для х ...' сделать вас mean 'result = [x + 1 для x ...'? – jonrsharpe

+0

Я не знаю, возможно, да, я хочу увеличить «результат» на 1, если найдено условие в запросе. Поскольку я не даю x никакой ценности, я думал, что невозможно сделать что-то вроде x + 1, но я попробую. Спасибо – codeKiller

+0

В этом случае попробуйте 'result + = sum (1 for _ in ...)' или 'result + = len (tab.where (...))' – jonrsharpe

ответ

0

Вы правы, вы не можете сделать это:

for i in xrange(1,10): 
    tab.where('col3 == i') 

Вместо этого попробуйте:

for i in xrange(1,10): 
    cond = 'col3 == %d' % i 
    tab.where(cond) 
Смежные вопросы