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

我正在尝试将 dict 列表转换为 lambda 函数的 csv 字符串。我在下面编写的代码将数据作为键值。我正在尝试重新编写它,以便它基于 dict_keys 工作。


import io

import csv


output = 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  apple

count  1 

color  red

fruit  banana

count  2

color  yellow

我想要以下格式的数据


fruit   count  color

apple   1      red

banana  2      yellow

我知道这可以使用 .to_csv 方法在熊猫中实现。但我只是想在没有熊猫或任何 3rd 方库的情况下尝试它。


任何帮助表示赞赏。谢谢!


当年话下
浏览 159回答 3
3回答

烙印99

csv.DictWritercsv模块提供了一个DictWriter最适合我们处理记录的类,即需要写入 csv 文件的字典列表fields = ['fruit', 'count', 'color'] writer = csv.DictWriter(output, fieldnames=fields, delimiter='\t')writer.writeheader()writer.writerows(csvdata)print(output.getvalue())fruit   count   colorapple   1       redbanana  2       yellow

森栏

您可以通过首先写入标题然后为每一行写入数据来修复它。writer.writerow(csvdata[0].keys())for i in csvdata:    writer.writerow(i.values())convertedtocsv = output.getvalue()print(convertedtocsv)

莫回无

在序列化程序中工作,我必须将数据作为字符串发送,但作为 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'
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python