25

たとえば、次のように変換したいと思います。

Name,Time,Score
Dan,68,20
Suse,42,40
Tracy,50,38

の中へ:

Name,Dan,Suse,Tracy
Time,68,42,50
Score,20,40,38

編集:元の質問では、「転置」という用語が誤って使用されていました。

4

7 に答える 7

44

ファイルの内容全体がメモリに収まる場合は、使用できます

import csv
from itertools import izip
a = izip(*csv.reader(open("input.csv", "rb")))
csv.writer(open("output.csv", "wb")).writerows(a)

zip()基本的にandizip()は、転置操作と考えることができます。

a = [(1, 2, 3),
     (4, 5, 6),
     (7, 8, 9)]
zip(*a)
# [(1, 4, 7),
#  (2, 5, 8),
#  (3, 6, 9)]

izip()データの即時コピーを回避しますが、基本的に同じことを行います。

于 2011-02-01T23:36:35.960 に答える
2
from itertools import izip
from csv import reader, writer

with open('source.csv') as f, open('destination.csv', 'w') as fw:
    writer(fw, delimiter=',').writerows(izip(*reader(f, delimiter=',')))
于 2011-02-01T23:44:59.483 に答える
1

lines元のテキストのリストが本来あるべきものよりも優れている場合

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]))

またはcsvPythonモジュールを使用 - http://docs.python.org/library/csv.html

于 2011-02-01T23:36:12.713 に答える