【发布时间】:2018-05-17 09:50:43
【问题描述】:
问题描述
我想在 Python 3 中将元组列表解压缩为 csv 文件。
标题大小是固定的(4 项);元组的大小是可变的(1 到 4 个项目)。
解压后的元组数据应始终与相关标头对齐。
请参阅下面的示例和 python 代码尝试。
问题
无论元组大小如何,如何使解压后的元组数据与固定标头对齐?
示例:
CSV 输出(标题和数据之间的正确对齐)
数据 = [(value1, value2, value3, value4), (value1, value2, value3, 值4)]
DataHeader1, DataHeader2, DataHeader3, DataHeader4
value1, value2, value3, value4
value1, value2, value3, value4
CSV 输出(标头和数据不对齐)
数据 = [(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)
【问题讨论】:
-
我们如何知道元组中缺少 'value3',而不是 value2 或 value1?该信息是否在某处可用,还是只需要为每组元组告知它?
-
当元组大小为 3 时,总是缺少 value3。如果元组大小为 2,则始终缺少值 2 和 3。