Ответ Джона Клементса показывает, как перенести данные после его получения.
Возможно, вы также захотите рассмотреть возможность использования модуля 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))
Одна вещь, чтобы иметь в виду, что вы не собираетесь получите хороший интервал бесплатно. Даже если вы не выбрали все промежутки, которые выстроились в исходном случае, это не помогло бы, потому что это неправильная сумма. Я работал над этим, используя вкладки вместо пробелов, которые работают в этом случае (пока вы просматриваете его в редакторе с 8-символьными вкладками), потому что все ваши значения и заголовки имеют 7 символов или меньше ... но в целом, этот трюк не сработает. Итак, если вы действительно хотите, это удобная для чтения таблица с хорошим форматированием, а не хороший компромисс между читаемым человеком и машиночитаемым (что является CSV), это не весь ответ.
Решение, которое образуется у меня в голове, сильно использует встроенный 'zip'. Ты знаешь это? Если нет, проверьте это. Это супер полезно. – mgilson