<p>下面是一个如何使用<code>csv</code>模块以及如何使用自定义键对数据进行排序的示例。你知道吗</p>
<p>首先,几个实用函数:</p>
<pre><code>import csv
def read_csv(filename, row_formats=None, **csvopts):
"""
Read from a Comma Separated Value file;
returns a list of rows, where each row is a list of cell-values
"""
with open(filename, newline='') as csvfile:
rd = csv.reader(csvfile, **csvopts)
if row_formats:
data = [[fmt(cell) for fmt,cell in zip(row_formats, row)] for row in rd]
else:
data = list(rd)
return data
def write_csv(filename, data, **csvopts):
"""
Write to a Comma Separated Value file;
`data` is an iterable of rows, where each row is an iterable of cell values
"""
with open(filename, 'w', newline='') as csvfile:
wt = csv.writer(csvfile, **csvopts)
wt.writerows(data)
</code></pre>
<p>现在,我们可以加载你的数据文件</p>
<pre><code>data = read_csv("class3.txt", (str, int))
</code></pre>
<p>这给了我们</p>
<pre><code>data = [
['Anton v1', 0],
['Antonv2', 0],
['Henry', 0],
['Joe', 0],
['Berty', 0],
['Lee', 0],
['Antttton', 1],
['Anton22', 0]
]
</code></pre>
<p>整理一下</p>
<pre><code>def sort_key(row):
"""
This will sort by descending score then by ascending name
"""
return -row[1], row[0]
data.sort(key=sort_key)
</code></pre>
<p>结果是</p>
<pre><code>data = [
['Antttton', 1],
['Anton v1', 0],
['Anton22', 0],
['Antonv2', 0],
['Berty', 0],
['Henry', 0],
['Joe', 0],
['Lee', 0]
]
</code></pre>
<p>你可以像这样写回文件</p>
<pre><code>write_csv("class3.txt", data)
</code></pre>
<p>而生产</p>
<pre><code>Antttton,1
Anton v1,0
Anton22,0
Antonv2,0
Berty,0
Henry,0
Joe,0
Lee,0
</code></pre>