【问题标题】:Unpack list of tuples of variable size and align data to a csv-file with a fixed header size解压缩可变大小的元组列表并将数据对齐到具有固定标题大小的 csv 文件
【发布时间】: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。

标签: python csv tuples


【解决方案1】:

只要知道丢失了哪些数据,就可以进行以下操作:

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

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

3) 然后你就可以继续打印了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-25
    • 1970-01-01
    • 2017-07-05
    • 1970-01-01
    • 1970-01-01
    • 2016-10-29
    • 1970-01-01
    相关资源
    最近更新 更多