python - 需要在python中生成csv输出如下
问题描述
import csv
d={'a':[1,3,4],'b':[2,3,4],'c':[1]}
with open("result.csv","w") as csv_file:
csv_writer = csv.writer(csv_file,dialect='excel')
csv_writer.writerows(d.items())
需要得到如下输出:
一个 1 3 4 b 2 3 4 1
解决方案
您需要遍历输入字典;您在这里没有准备好的输入行。
对于输入字典中的每个键值对,您有多个 rows。第一行由键和第一个值组成,然后剩下的值有更多行,第一列为空。
您需要明确地编写这些行:
csv_writer = csv.writer(csv_file, dialect='excel')
for key, values in d.items():
csv_writer.writerow((key, values[0]))
csv_writer.writerows([(None, value) for value in values[1:]])
我用于None
空列值,这会在输出中产生一个空列:
>>> import csv
>>> from io import StringIO
>>> output = StringIO()
>>> d = {'a': [1, 3, 4], 'b': [2, 3, 4], 'c': [1]}
>>> csv_writer = csv.writer(output, dialect='excel')
>>> for key, values in d.items():
... csv_writer.writerow((key, values[0]))
... csv_writer.writerows([(None, value) for value in values[1:]])
...
5
5
5
>>> print(output.getvalue())
a,1
,3
,4
b,2
,3
,4
c,1
您可能想在循环中添加一个sorted()
调用;d.items()
否则,您的输出将按字典顺序排列,这是基于插入和删除历史的任意顺序,至少在 Python 3.6 之前。
推荐阅读
- objective-c - UICollectionview 更改项目排序 Objective-C
- kubernetes - Nginx 反向代理背后的 Botpress
- javascript - 如何将我的 JavaScript 库代码与 webpack 打包成 jQuery 一样可扩展?
- c++ - 使用openthread而不使用线程协议的CoAP应用程序开发
- google-apps-script - Google APP 脚本将值转换为 TRUE 以设置 MultipleChoice 答案键
- mysql - 如何找到客户在特定日期范围内的最大点击次数?
- sql - 关于使用存储在记录中的数据库名称的跨数据库子查询
- java - Androidx 迁移:NoClassDefFoundError
- tcp - 针对大量小数据请求的管道与 TCP/IP 的性能
- ios - 在 Cordova for iOS 中设置自动填充