为了账号安全,请及时绑定邮箱和手机立即绑定

使用 dict_keys 将 dict 列表转换为 CSV 字符串

使用 dict_keys 将 dict 列表转换为 CSV 字符串

当年话下 2022-10-25 10:42:41
我正在尝试将 dict 列表转换为 lambda 函数的 csv 字符串。我在下面编写的代码将数据作为键值。我正在尝试重新编写它,以便它基于 dict_keys 工作。import ioimport csvoutput = io.StringIO()csvdata = [{"fruit": "apple", "count": "1", "color": "red"},{"fruit": "banana", "count": "2", "color": "yellow"}]writer = csv.writer(output, quoting=csv.QUOTE_NONNUMERIC)    for i in csvdata:        for key, value in i.items():            writer.writerow([key, value])convertedtocsv = output.getvalue()输出:'"fruit","apple"\r\n"count","1"\r\n"color","red"\r\n"fruit","banana"\r\n"count" ,"2"\r\n"颜色","黄色"\r\n'fruit  applecount  1 color  redfruit  bananacount  2color  yellow我想要以下格式的数据fruit   count  colorapple   1      redbanana  2      yellow我知道这可以使用 .to_csv 方法在熊猫中实现。但我只是想在没有熊猫或任何 3rd 方库的情况下尝试它。任何帮助表示赞赏。谢谢!
查看完整描述

3 回答

?
烙印99

TA贡献1829条经验 获得超13个赞

csv.DictWriter

csv模块提供了一个DictWriter最适合我们处理记录的类,即需要写入 csv 文件的字典列表

fields = ['fruit', 'count', 'color'] 

writer = csv.DictWriter(output, fieldnames=fields, delimiter='\t')

writer.writeheader()

writer.writerows(csvdata)

print(output.getvalue())


fruit   count   color

apple   1       red

banana  2       yellow


查看完整回答
反对 回复 2022-10-25
?
森栏

TA贡献1810条经验 获得超5个赞

您可以通过首先写入标题然后为每一行写入数据来修复它。


writer.writerow(csvdata[0].keys())

for i in csvdata:

    writer.writerow(i.values())


convertedtocsv = output.getvalue()

print(convertedtocsv)


查看完整回答
反对 回复 2022-10-25
?
莫回无

TA贡献1865条经验 获得超7个赞

在序列化程序中工作,我必须将数据作为字符串发送,但作为 csv,我得到了这个转换,如果它对任何人有帮助的话


to_csv = [

    {'name': 'bob', 'age': 25, 'weight': 200},

    {'name': 'jim', 'age': 31, 'weight': 180},

]


keys = to_csv[0].keys()


result = [list(keys)] + [list(row.values()) for row in to_csv]

# [['name', 'age', 'weight'], ['bob', 25, 200], ['jim', 31, 180]]


str_result = '\n'.join([';'.join(str(val) for val in row) for row in result])

# 'name;age;weight\nbob;25;200\njim;31;180'


查看完整回答
反对 回复 2022-10-25
  • 3 回答
  • 0 关注
  • 157 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信