Python:如何从字典列表中创建一个 csv 字符串(无文件)?

标签 python string list csv dictionary

在 Python 中,我有一个像这样的字典列表:

[
    {
        "col2": "2",
        "id": "1",
        "col3": "3",
        "col1": "1"
    },
    {
        "col2": "4",
        "id": "2",
        "col3": "6",
        "col1": "2"
    },
    {
        "col1": "1",
        "col2": "4",
        "id": "3",
        "col3": "7"
    }
]

我需要将其转换为 csv 格式的字符串,包括标题行。 (对于初学者来说,我们不要关心列和行分隔符......)
因此,理想情况下,结果将是:
id,col1,col2,col3
1,1,2,3
2,2,4,6
3,1,4,7

(“理想情况下”,因为列顺序并不重要;尽管首先拥有“id”列会很好......)

我搜索了 SOF 并且有许多类似的问题,但答案总是涉及创建一个 csv 文件 使用 csv.DictWriter。我不想创建文件,我只想要那个字符串!

当然,我可以遍历列表并在此循环中遍历字典键,并以这种方式使用字符串操作创建 csv 字符串。但是肯定必须有一些更优雅和有效的方法来做到这一点?

另外,我知道 Pandas 库,但我试图在一个非常有限的环境中执行此操作,我更喜欢仅使用内置模块。

最佳答案

您可以使用 io.StringIO 写入“字符串”而不是文件。使用 csv.DictWriter 的例子我们得到以下代码:

import csv
import io

data = [...]  # your list of dicts

with io.StringIO() as csvfile:
    fieldnames = ['id', 'col1', 'col2', 'col3']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

    writer.writeheader()
    for row in data:
        writer.writerow(row)
    print(csvfile.getvalue())

关于Python:如何从字典列表中创建一个 csv 字符串(无文件)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58283350/

相关文章:

python - 从列表列表中删除特定类的所有元素

python - matplotlib中直方图的X轴乱序

python - 创建对象后更改其类型(Python 中的类型转换)

javascript - 如何制作字符串回文?

c - 我的程序替换链表中所有节点中的所有字符串数据类型

R数据框到嵌套列表

python - 根据断点创建更大范围的子范围

python - 多级字典python

ios - 获取字符串的长度

python - 创建不同对象的列表副本