CSV写入字符串而不是col

时间:2014-10-01 09:57:43

标签: python csv

例如有三个列表:

list4 = (start_time, 'Test type1', 'Result1', 'Units1')
list5 = (start_time, 'Test type2', 'Result2', 'Units2')
list6 = (start_time, 'Test type3', 'Result3', 'Units3')

然后 - 他们用于:

report = open('111.csv', 'w')
writer = csv.writer(report, delimiter=';')

#writer = csv.writer(sys.stdout, delimiter=';')

for row in zip(list4, list5, list6):
   writer.writerow(row)

这导致了这个结果:

$ cat 111.csv
2014-10-01 16:53:29;2014-10-01 16:53:29;2014-10-01 16:53:29
Test type1;Test type2;Test type3
Result1;Result2;Result3
Units1;Units2;Units3

但_ want - 它创建文件如:

2014-10-01 16:51:21;Test type1;Result1;Units1;
2014-10-01 16:51:21;Test type2;Result2;Units2;
2014-10-01 16:51:21;Test type3;Result3;Units3;

2 个答案:

答案 0 :(得分:1)

好像你想转置你的数据。因此,只需使用zip(list4, list5, list6)(list4, list5, list6)

而不是[list4, list5, list6]
>>> zip(list4,list5,list6)
[(1, 1, 1), ('Test type1', 'Test type2', 'Test type3'), ('Result1', 'Result2', 'Result3'), ('Units1', 'Units2', 'Units3')]

>>> [list4,list5,list6]
[(1, 'Test type1', 'Result1', 'Units1'), (1, 'Test type2', 'Result2', 'Units2'), (1, 'Test type3', 'Result3', 'Units3')]

答案 1 :(得分:1)

你似乎在python中的元组和列表之间感到困惑。任何第二种pythonic方法都可以将可用元组附加到空白列表中。这样,您可以动态操作csv写入的可用数据,而不是硬编码:

csv_data = []
a = (start_time, 'Test type1', 'Result1', 'Units1')
b = (start_time, 'Test type2', 'Result2', 'Units2')
c = (start_time, 'Test type3', 'Result3', 'Units3')

if len(a)==4 :#eg condition: check if a has 4 elements
    csv_data.append(a)

#some other condition
csv_data.append(b)

#check if start_time is 1 day ago
csv_data.append(c)
#manipulated csv data is available in list csv_data
print csv_data