For example, i would like to transform:
Name,Time,Score
Dan,68,20
Suse,42,40
Tracy,50,38
Into:
Name,Dan,Suse,Tracy
Time,68,42,50
Score,20,40,38
EDIT: the original question used the term "transpose" incorrectly.
If the whole file contents fits into memory, you can use
import csv
from itertools import izip
a = izip(*csv.reader(open("input.csv", "rb")))
csv.writer(open("output.csv", "wb")).writerows(a)
You can basically think of zip() and izip() as transpose operations:
a = [(1, 2, 3),
(4, 5, 6),
(7, 8, 9)]
zip(*a)
# [(1, 4, 7),
# (2, 5, 8),
# (3, 6, 9)]
izip() avoids the immediate copying of the data, but will basically do the same.
If lines is the list of your original text than it should be
for i in range(1,len(lines)):
lines[i] = lines[i].split(',')
new_lines = []
for i in range(len(lines[0])):
new_lines.append("%s,%s,%s" % (lines[0][i], lines[1][i], lines[2][i]))
or use csv Python module - http://docs.python.org/library/csv.html
not not xinstead ofbool(x):-) - John Machin