Python 如何将txt文件中具有相同键、不同值的多个词典导出到csv

Python 如何将txt文件中具有相同键、不同值的多个词典导出到csv,python,dictionary,Python,Dictionary,我有一个txt文件中的{n}词典列表。如下图所示,每行每个字典,我希望以csv格式导出,每列显示每个键 {'a':'1','b':'2','c':'3'} {'a':'4','b':'5','c':'6'} {'a':'7','b':'8','c':'9'} {'a':'10','b':'11','c':'12'} ... {'a':'x','b':'y','c':'z'} 我想要{n}行的csv输出,如下所示,带有索引 a b c 0 1 2 3 1 4

我有一个txt文件中的{n}词典列表。如下图所示,每行每个字典,我希望以csv格式导出,每列显示每个键

{'a':'1','b':'2','c':'3'}
{'a':'4','b':'5','c':'6'}
{'a':'7','b':'8','c':'9'}
{'a':'10','b':'11','c':'12'}
...
{'a':'x','b':'y','c':'z'}
我想要{n}行的csv输出,如下所示,带有索引

    a   b   c
0   1   2   3
1   4   5   6
2   7   8   9
... ... ... ...
n   x   y   z
输出为

{'a': ['1', '4', '7', '10'],
 'b': ['2', '5', '8', '11'],
 'c': ['3', '6', '9', '12']}

或者您可以使用
pandas.concat
,它用于将
DataFrames
与相同的列组合

import pandas as pd
x =[{'a':'1','b':'2','c':'3'},
{'a':'4','b':'5','c':'6'},
{'a':'7','b':'8','c':'9'},
{'a':'10','b':'11','c':'12'}]

xpd=[]
for i in x:
    df=pd.DataFrame(i, index=[0])
    xpd.append(df) 
pd.concat(xpd, ignore_index=True)

您可以使用
ast.literal_eval
()从文本文件加载数据

使用输入文件
file.txt的内容:

{'a':'1','b':'2','c':'3'}
{'a':'4','b':'5','c':'6'}
{'a':'7','b':'8','c':'9'}
{'a':'10','b':'11','c':'12'}
{'a':'x','b':'y','c':'z'}
您可以使用此脚本加载数据并输入
file.csv

import csv
from ast import literal_eval

with open('file.txt', 'r') as f_in:
    lst = [literal_eval(line) for line in f_in if line.strip()]

with open('file.csv', 'w', newline='') as csvfile:
    fieldnames = ['a', 'b', 'c']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

    writer.writeheader()
    writer.writerows(lst)
file.csv
将成为:

a,b,c
1,2,3
4,5,6
7,8,9
10,11,12
x,y,z
将文件导入到LibreOffice:


你试过什么?SO的要点不是人们会想出你需要做xyz的代码。。。。重点是帮助解决具体问题。对于相同的代码,我得到以下错误。我遗漏了什么?-->writer.writerows(lst)AttributeError:“tuple”对象没有属性“keys”@Sam您正在尝试使用DictWriter编写元组而不是字典
writerows()
函数接受字典列表/元组,而不是列表列表。使用pandas.concat可以工作,但我希望从本地磁盘驱动器中的外部txt文件导入字典。我累了:f=open('data.txt','r')x=[f]但得到了错误:ValueError:传递值的形状是(3,1),索引暗示(1,1)@Sam这是另一个问题
a,b,c
1,2,3
4,5,6
7,8,9
10,11,12
x,y,z