2012-07-27 88 views
0

我有csv上的各种行,但我只是想排序那些谁高于0,因为我也有负数,所以我试了这个,它似乎并不工作蟒蛇 - 条件排序

在HTML
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 

IM outputing

是的,它写的不好,我知道,我还在学习的语言。这只是代码的一部分,因为你们可以得到一般想法。

时,其分类我得到的东西像75 74 50 -30 2月15日等等等等

我想这是75 74 50 15二,在不逊色的数字为0。

你们可以帮忙我?

+0

清理那个代码?有一个很大的错误...它有什么错误? “似乎不起作用”并不真正有帮助。 – 2012-07-27 22:50:28

+2

尝试过滤器而不是排序 – mrok 2012-07-27 22:50:55

+0

mrok是正确的你想过滤...或列表理解 – 2012-07-27 22:54:24

回答

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我不能以任何顺序察觉。你是否足够让它从最低到最高显示,反之亦然? – 2012-07-27 23:10:23

+0

@DinarteTeixeira:我修改了我的答案(通过添加'key'参数)按照第24列中的整数值进行排序。 – unutbu 2012-07-27 23:50:55