【问题标题】:How should I pass 2 parameters to csv-writer from my list?我应该如何将 2 个参数从我的列表中传递给 csv-writer?
【发布时间】:2019-10-02 09:18:30
【问题描述】:

目前我正在尝试保存我的列表bitrateListEqualized 的格式:

[[2.221408], ['Wed Oct  2 11:05:28 2019']]
[[2.347744], ['Wed Oct  2 11:05:29 2019']]
[[2.47408], ['Wed Oct  2 11:05:30 2019']]

.csv文件使用这样的代码:

with open("/home/user/bitrateFolder/Bitrate_history_ip_{}:{}.csv".format(MCAST_GRP,MCAST_PORT,),"w+", newline='') as csvfile:
        thewriter = csv.writer(csvfile, delimiter=',')
        thewriter.writerow(['values','dates'])
        for x in range(len(bitrateListEqualized)):
            bitrateListEqualized[x][0][0] = bitrateListEqualized[x][0][0]*8/(SAMPLING_TIME*1000000)
            data = [bitrateListEqualized[x]]
            thewriter.writerow(data)
        thewriter.writerow(max(bitrateListEqualized))
        thewriter.writerow(min(bitrateListEqualized))

保存此类列表的结果是:

values,dates
"[[10.73856], ['Wed Oct  2 11:11:23 2019']]"
"[[10.780672], ['Wed Oct  2 11:11:24 2019']]"
"[[10.73856], ['Wed Oct  2 11:11:25 2019']]"
"[[10.73856], ['Wed Oct  2 11:11:26 2019']]"
"[[10.759616000000001], ['Wed Oct  2 11:11:27 2019']]"
"[[10.73856], ['Wed Oct  2 11:11:28 2019']]"
"[[10.770143999999998], ['Wed Oct  2 11:11:29 2019']]"
"[[10.73856], ['Wed Oct  2 11:11:30 2019']]"
[10.780672],['Wed Oct  2 11:11:24 2019']
[10.73856],['Wed Oct  2 11:11:23 2019']

我希望.csv 文件看起来像这样:

values,dates
10.73856,Wed Oct  2 11:11:23 2019
10.780672,Wed Oct  2 11:11:24 2019
10.73856,Wed Oct  2 11:11:25 2019
10.780672,Wed Oct  2 11:11:24 2019
10.73856,Wed Oct  2 11:11:23 2019

你们能帮帮我吗?提前谢谢你。

【问题讨论】:

    标签: python list csv export


    【解决方案1】:

    在 csv 创建迭代之前将您的列表转换为平面列表

    bitrateListEqualized  = [
        [[2.221408], ['Wed Oct  2 11:05:28 2019']],
        [[2.347744], ['Wed Oct  2 11:05:29 2019']],
        [[2.47408], ['Wed Oct  2 11:05:30 2019']]
    ]
    
    
    
    flat_lst = [[x[0][0],x[1][0]]for x in bitrateListEqualized]
    print(flat_lst)
    

    输出

    [[2.221408, 'Wed Oct  2 11:05:28 2019'], [2.347744, 'Wed Oct  2 11:05:29 2019'], [2.47408, 'Wed Oct  2 11:05:30 2019']]
    

    【讨论】:

      【解决方案2】:

      有两个问题需要解决:使用列表列表写入 csv,并在最后对其进行排序。

      这是我想出的:

      with open("/home/user/bitrateFolder/{}_{}.csv".format(MCAST_GRP, MCAST_PORT), "w", newline='') as csvfile:
              thewriter = csv.writer(csvfile, delimiter=',')
              thewriter.writerow(['values','dates'])
              for e in bitrateListEqualized:
                  thewriter.writerow([e[0][0]*8/(SAMPLING_TIME*1000000), e[1][0]])
              sorted_bilateralListEqualizer = sorted([[e[0][0], e[1][0]] for e in bitrateListEqualized], key=itemgetter(1))
              thewriter.writerow(sorted_bilateralListEqualizer[-1]) # max
              thewriter.writerow(sorted_bilateralListEqualizer[0]) # min
      
      • 我将您的 ':' 替换为下划线,因为我在编写文件路径时遇到问题。 我遍历您的列表,对于bilateralListEqualizer 中的每个元素,我得到element[0][0](值)和element[1][0](日期)。 这两个进入一个列表:[value, date],然后 this 可以作为一行写入您的 csv 输出。

      • 1234563最小值)元素到 csv。

      排序的输出如下所示:

      [[2.221408, 'Wed Oct 2 11:05:28 2019'], [2.347744, 'Wed Oct 2 11:05:29 2019'], [2.47408, 'Wed Oct 2 11:05:30 2019']]

      如果您需要更多详细信息,请告诉我。

      这是我得到的输出(忽略值的值,我创建了一个虚拟 SAMPLING_TIME):

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-11
        • 1970-01-01
        • 1970-01-01
        • 2015-10-02
        • 1970-01-01
        • 2010-09-27
        • 2012-06-23
        • 1970-01-01
        相关资源
        最近更新 更多