在 Python 中将 zip 列表保存到 csv

Posted

技术标签:

【中文标题】在 Python 中将 zip 列表保存到 csv【英文标题】:Saving zip list to csv in Python 【发布时间】:2016-05-17 20:23:06 【问题描述】:

如何在 python 中将下面的 zip 列表写入 csv 文件?

['date': '2015/01/01 00:00', 'v': 96.5,
 'date': '2015/01/01 00:01', 'v': 97.0,
 'date': '2015/01/01 00:02', 'v': 93.75,
 'date': '2015/01/01 00:03', 'v': 96.0,
 'date': '2015/01/01 00:04', 'v': 94.5

我有这个错误:

_csv.Error: sequence expected

我的代码在这里:

import csv
res = zip_list
csvfile = "/home/stm/PycharmProjects/isbak_trafik/example.csv"

with open(csvfile, "w") as output:
    writer = csv.writer(output, lineterminator='\n')
    writer.writerows(res)

【问题讨论】:

字典不是序列。使用csv.DictWriter。或写dict.values() 【参考方案1】:

由于我发现 csv.DictWriter 的作用不透明,我建议您执行以下操作:

with open(csvfile, "w") as output:
    output.write(';'.join(list(res[0].keys()))+"\n")
    [output.write(';'.join(list(map(str, r.values())))+"\n") for r in res]

【讨论】:

代码示例的最后一行只是一个技巧,这样你就可以在一行中编写它。不要忘记,PEP8 代码风格指南不推荐这样做。 谢谢。但结果,我的 csv 中只有“日期”和“v”。但是,我想将这些数值带到我的 csv 文件中。请问你能帮我吗? @GerhardHagerer ['date': '2015/01/01 00:00', 'v': 96.5, 'date': '2015/01/01 00:01', 'v': 97.0, '日期':'2015/01/01 00:02','v':93.75 对不起,我更正了代码示例。我对其进行了测试,它在我的 Python3 shell 中运行良好 感谢您的帮助! @GerhardHagerer【参考方案2】:

writer.writerows 需要一系列值来将单行写入 CSV 文件。

使用您的原始代码:

import csv
res =['date': '2015/01/01 00:00', 'v': 96.5, 'date': '2015/01/01 00:01', 'v': 97.0, 'date': '2015/01/01 00:02', 'v': 93.75, 'date': '2015/01/01 00:03', 'v': 96.0, 'date': '2015/01/01 00:04', 'v': 94.5]
csvfile = "example.csv"
with open(csvfile, "w") as output:
  writer = csv.writer(output, lineterminator='\n')
  for line in res:
    date = line['date']
    value = line['v']
    writer.writerow([date, value])

【讨论】:

【参考方案3】:

您可以为此切换到使用 Python 的 DictWriter。您可以传递列标题列表,这可以确保输出中列的顺序是您需要的。只有此列表中的列会写入您的输出文件:

import csv

zip_list = [
    'date': '2015/01/01 00:00', 'v': 96.5,
    'date': '2015/01/01 00:01', 'v': 97.0,
    'date': '2015/01/01 00:02', 'v': 93.75,
    'date': '2015/01/01 00:03', 'v': 96.0,
    'date': '2015/01/01 00:04', 'v': 94.5]

csvfile = "/home/stm/PycharmProjects/isbak_trafik/example.csv"

with open(csvfile, "wb") as output:
    writer = csv.DictWriter(output, fieldnames=['date', 'v'])
    writer.writeheader()
    writer.writerows(zip_list)

这将产生以下输出:

date,v
2015/01/01 00:00,96.5
2015/01/01 00:01,97.0
2015/01/01 00:02,93.75
2015/01/01 00:03,96.0
2015/01/01 00:04,94.5

【讨论】:

谢谢!! @MartinEvans

以上是关于在 Python 中将 zip 列表保存到 csv的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中将重定向url保存到csv文件

在 Python 2.7.3 中将 csv 文件附加到一个空列表中 - 获取一个空列表

如何在python中将文本字符串列表转换为熊猫数据框?

在 Python 中将 .csv 值作为单个列表导入

在 Python 中将列表写入 CSV [重复]

在Python中的列中将不同大小的列表写入csv