python - 如何将txt文件中具有相同键、不同值的多个字典导出到csv
问题描述
我有一个 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
解决方案
您可以使用ast.literal_eval
( doc ) 从文本文件中加载数据。
输入文件的内容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:
推荐阅读
- node.js - 如何从Nodejs中的函数中提取变量
- objective-c - 如何找到推送了哪个 viewController?
- 3d - 处理 3:如何将轴保持在默认位置?
- javascript - 检测字符串中的链接并在Javascript中插入锚标记
- javascript - 计算碰撞数
- javascript - 如果用户是管理员,则显示/生成元素的安全方式
- python - 在数据框的一列中查找相同的值,并为每个重复项创建一个新的数据框
- python - 多线程随机数和CPU监控
- sql-server - 具有多个用户和中央数据库的 .Net Frame Core 应用程序
- kdb - 在 q 中创建一个张开的表