解压缩可变大小的元组列表,并将数据与具有固定标头大小的csv文件对齐

时间:2017-12-04 00:12:20

标签: python csv tuples

问题说明

我想在Python 3中将元组列表解压缩到csv文件。
标题大小是固定的(4项);元组的大小可变(1到4项) 解压缩的元组数据应始终与相关标头对齐 请参阅下面的示例和python代码尝试。

问题

无论元组大小如何,如何将解压缩的元组数据与固定标头对齐?

示例:

CSV输出(标头和数据之间的正确对齐

  

data = [(value1,value2,value3,value4),(value1,value2,value3,   值4)]

DataHeader1, DataHeader2, DataHeader3, DataHeader4
value1,      value2,      value3,      value4
value1,      value2,      value3,      value4


CSV输出(标头和数据之间的错位

  

data = [(value1,value2,value4),(value1,value2,value4)] - >   没有价值3

DataHeader1, DataHeader2, DataHeader3, DataHeader4
value1,      value2,      value4
value1,      value2,      value4

DataHeader1, DataHeader2, DataHeader3, DataHeader4
value1,      value2,                 , value4
value1,      value2,                 , value4


Python代码(确定):

header = 'DataHeader1, DataHeader2, DataHeader3, DataHeader4'
data = [('value1','value2','value3','value4'), ('value1','value2','value3','value4')]

print(header)
print(''.join('{0},{1},{2},{3}\n'.format(a,b,c,d) for a,b,c,d in data))
  

输出

DataHeader1, DataHeader2, DataHeader3, DataHeader4
value1,      value2,      value3,      value4
value1,      value2,      value3,      value4


Python代码(不行)

data = [('value1','value2', 'value4'), ('value1','value2','value4')]
print(''.join('{0},{1},{2},{3}\n'.format(a,b,c,d) for a,b,c,d in data))
  

输出(由于元组大小不匹配而无法打印

ValueError: not enough values to unpack (expected 4, got 3)

1 个答案:

答案 0 :(得分:0)

只要您知道缺少哪些数据,就可以执行以下操作:

1)使用len(myTuple)计算数据的数量,以便知道它是否小于4。

2)创建一个中间步骤来创建一个新元组,其中包含在末尾或元组数据中的任何位置插入的空值。你必须从你拥有的数据创建新的元组,因为元组是不可变的。

3)然后你可以继续进行打印。