2012-07-27 3 views
0

У меня есть разные строки на csv, но я просто хочу сортировать тех, кто выше 0, так как у меня также есть отрицательные числа, поэтому я пробовал это, и он не работаетpython - сортировка с условиями

try : 
    ligacsv = csv.reader(open('%s/liga.csv', 'r')%BASE_DIR, delimiter='|') 

except IOError, e 

try: 
    ligacsv = csv.reader(open('C:/www/liga.csv', 'r'), delimiter='|') 
except: ligacsv=[] 


d = sorted(ligacsv, key=lambda x: (int(x[1])>'0'), reverse=False) 

for linha in d: 
    for i in linha[0:1]]: 
     print '<td align="right">%s</td>' %i 

им outputing в HTML

Да, это плохо написано я знаю, я все еще учусь языка. Это всего лишь часть кода, потому что вы, ребята, получаете общую идею.

когда его отсортирован я получаю что-то вроде 75 74 50 -30 15 2 и т.д. и т.п.

я хочу, чтобы это было 75 74 50 15 2. Без чисел уступает 0.

Можете ли вы, ребята, помочь меня?

+0

Умение очистить этот код? там что-то не так с этим ... И в чем ошибка? «Кажется, не работает» на самом деле не очень полезно. –

+2

Попробуйте использовать фильтр, а не отсортированный – mrok

+0

mrok правый, вы хотите фильтр ... или понимание списка –

ответ

1
d = sorted([row for row in ligascv if int(row[23])>0], 
      key = lambda row: int(row[23]), 
      reverse = False) 
+0

Спасибо unutbu, который работал почти чудесно, за исключением того факта, что, хотя он не дает мне никакого номера ниже 0, результаты aren В любом порядке я могу воспринимать. Вы достаточно любезны, чтобы отображать его с самого низкого до самого высокого или наоборот? –

+0

@ DinarteTeixeira: Я изменил свой ответ (добавив параметр 'key') для сортировки в соответствии с целым значением в 24-й колонке. – unutbu

Смежные вопросы