今天來做一個題目,有一個檔案,内容如下:
[root@Virtual python]# cat a.csv 源檔案
2004-5-27,2,3,2,3
2004-5-27,872,0,872,0
2004-5-27,1872,0,872,0
2004-5-27,3872,0,872,0
2004-5-27,9872,0,872,0
2004-5-29,1762,24,1762,24
2004-5-28,2011,20,2011,20
需求是對檔案内容的第二列内容進行排序,排序之後如下顯示:
[root@Virtual python]# cat b.csv
下面講下我的解題思路,首先把檔案内容讀入到一個清單,然後提取需要排序的第二列的字段值到另外一個清單裡面,2個清單組成一個字典,然後<b>對字典按照值來進行排序</b>,
下面來看看腳本吧,注釋寫的比較清晰了:
[root@Virtual python]# cat xiecvs.py
#!/usr/bin/env python
f=open('a.csv')
aa={}
bb=[]
k=[]
for i in f.readlines():
bb.append(i.split('\n')) 把檔案内容讀入清單
k.append(i.split(',')[1]) 吧需要拍下的列的内容加入到一個清單
for i in range(0,len(bb)):
aa[bb[i][0]]=int(k[i]) 生成一個字典,鍵是檔案内容,值是需要排序的内容
f.close()
cc=sorted(aa.items(),key=lambda aa:aa[1]) 對字典進行按照值來排序,傳回值是個清單
g=open('b.csv','w+')
for i in range(0,len(cc)):
g.write(cc[i][0] + "\n") 吧清單内容按照一定順序寫入新的檔案
g.close()
[root@Virtual python]#
腳本比較粗糙,如果有更好的法子,請不吝賜教。。。。
本文轉自你是路人甲還是霍元甲部落格51CTO部落格,原文連結http://blog.51cto.com/world77/1121550如需轉載請自行聯系原作者
world77