Jon Clements的答案显示了如何在您拥有数据后转置数据。
您可能还想考虑使用csv
模块首先读取数据,并且您应该确定关闭文件。
import csv
with open('grades') as fin:
rows = csv.reader(fin, delimiter=' ', skipinitialspace=True)
transposed = zip(*rows)
with open('tgrades', 'w') as fout:
w = csv.writer(fout, delimiter='\t')
w.writerows(transposed)
而且一旦你了解每一行是干什么的,你可以做这个有很多更简洁:
import csv
with open('grades') as fin, open('tgrades', 'w') as fout:
rows = csv.reader(fin, delimiter=' ', skipinitialspace=True)
csv.writer(fout, delimiter='\t').writerows(zip(*rows))
有一点要记住的是,你不会免费获得很好的间距。即使你没有把原来的情况排除在外,也没有什么帮助,因为这是错误的。我通过使用制表符而不是空格来解决这个问题,因为所有的值和标题都是7个字符或更少......但通常,在这种情况下(只要在编辑器中使用8个字符的制表符查看它)这个技巧是行不通的。所以,如果你真正想要的是一个人们可读的表格,它具有很好的格式,而不是在人类可读和机器可读(这是CSV是什么)之间的妥协,这不是完整的答案。
我头上形成的解决方案大量使用了“zip”内建。你知道吗?如果没有,请检查出来。这是非常有用的。 – mgilson 2013-04-29 19:20:31