天天看点

python学习------csv文件排序

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,如需转载请自行联系原作者