问题说明
我想在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)
答案 0 :(得分:0)
只要您知道缺少哪些数据,就可以执行以下操作:
1)使用len(myTuple)计算数据的数量,以便知道它是否小于4。
2)创建一个中间步骤来创建一个新元组,其中包含在末尾或元组数据中的任何位置插入的空值。你必须从你拥有的数据创建新的元组,因为元组是不可变的。
3)然后你可以继续进行打印。