python学习------csv文件排序
需求:从xml文件中获取的数据生成了CSV文件。但CSV文件内容无规律,我们需要对CSV文件进行排序。
实现:
1.csv文件内容
<code># cat test.csv </code>
<code>1</code><code>|e|hunk</code>
<code>2</code><code>|a|tom</code>
<code>3</code><code>|d|jim</code>
<code>4</code><code>|b|jack</code>
<code>5</code><code>|c|lucy</code>
2.python 程序
<code># cat test.py </code>
<code>#/usr/bin/evn python</code>
<code># -*- coding: utf-8 -*-</code>
<code>import</code> <code>csv, operator</code>
<code>import</code> <code>sys</code>
<code>reload</code><code>(sys)</code>
<code>sys.setdefaultencoding(</code><code>'utf8'</code><code>)</code>
<code>def</code> <code>sort_csv(LDIR,csv_file,sort_file):</code>
<code> </code><code>data </code><code>=</code> <code>csv.reader(</code><code>open</code><code>(LDIR</code><code>+</code><code>csv_file),delimiter</code><code>=</code><code>'|'</code><code>) </code>
<code> </code><code>sortedlist </code><code>=</code> <code>sorted</code><code>(data,key</code><code>=</code><code>lambda</code> <code>x:(x[</code><code>0</code><code>],x[</code><code>1</code><code>]),reverse</code><code>=</code><code>True</code><code>) </code>
<code> </code>
<code> </code><code>with </code><code>open</code><code>(LDIR</code><code>+</code><code>sort_file, </code><code>"wb"</code><code>) as f: </code>
<code> </code><code>fileWriter </code><code>=</code> <code>csv.writer(f, delimiter</code><code>=</code><code>'|'</code><code>) </code>
<code> </code><code>for</code> <code>row </code><code>in</code> <code>sortedlist: </code>
<code> </code><code>fileWriter.writerow(row) </code>
<code> </code><code>f.close()</code>
<code>def</code> <code>main():</code>
<code> </code><code>sort_csv(</code><code>'/tmp/'</code><code>,</code><code>'test.csv'</code><code>,</code><code>'sort.csv'</code><code>)</code>
<code>if</code> <code>__name__</code><code>=</code><code>=</code><code>'__main__'</code><code>:</code>
<code> </code><code>main()</code>
3.生成排序后的文件
<code># cat sort.csv </code>
总结:
关于“sorted(data,key=lambda x:(x[0],x[1]),reverse=True)”参数解释:
参数reverse=True 表示降序排序
参数reverse=False表示升序排序
本文转自独弹古调 51CTO博客,原文链接:http://blog.51cto.com/hunkz/1845498,如需转载请自行联系原作者