<p>我将使用一个使用<a href="http://docs.python.org/2/library/itertools.html#itertools.groupby" rel="nofollow">itertools.groupby</a>函数和<a href="http://docs.python.org/2/library/csv.html" rel="nofollow">csv module</a>的解决方案。请仔细看看itertools的<a href="http://docs.python.org/2/library/itertools.html" rel="nofollow">documentation</a>你可以比你想象的更频繁地使用它!在</p>
<p>我用空行来区分数据集,这种方法使用惰性求值,一次只在内存中存储一个数据集:</p>
<pre><code>import csv
from itertools import groupby
with open('my_data.csv') as ifile, open('my_out_data.csv', 'wb') as ofile:
# Use the csv module to handle reading and writing of delimited files.
reader = csv.reader(ifile)
writer = csv.writer(ofile, delimiter='\t')
# Skip info line
next(reader)
# Group datasets by the condition if len(row) > 0 or not, then filter
# out all empty lines
for group in (v for k, v in groupby(reader, lambda x: bool(len(x))) if k):
test_data = list(group)
# Write header
writer.writerow([test_data[0][1]])
# Write transposed data
writer.writerows(zip(*test_data[1:]))
# Write blank line
writer.writerow([])
</code></pre>
<p>如果提供的数据存储在<code>my_data.csv</code>中,则输出:</p>
^{pr2}$