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