在 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/