python - 我将如何编写不使用 DictReader 但获得与使用 DictReader 相同的结果?
问题描述
本质上,假设我的 CSV 文件是这样的:
name,job,age
Michael,Engineer,35
Katie,Doctor,52
Johnny,Physicist,42
然后我想返回这个:
{'name':'Michael','job':'Engineer','age':'35'}
{'name':'Katie','job':'Doctor','age':'52'}
{'name':'Johnny','job':'Physicist','age':'42'}
当然,使用 DictReader 很容易做到这一点,但我想长期这样做。如果不使用 DictReader,我该怎么做呢?
解决方案
您可以通过使用内置zip()
函数创建一系列(键,值)对来轻松完成此操作,这些对可以传递给dict()
构造函数以为每一行数据创建一个:
from pprint import pprint
def readFile(reader):
list1 = []
header = next(reader).strip().split(',')
for line in reader:
row = dict(zip(header, line.strip().split(',')))
list1.append(row)
return list1
with open('people.csv') as file:
list1 = readFile(file)
pprint(list1, sort_dicts=False)
输出:
[{'name': 'Michael', 'job': 'Engineer', 'age': '35'},
{'name': 'Katie', 'job': 'Doctor', 'age': '52'},
{'name': 'Johnny', 'job': 'Physicist', 'age': '42'}]
推荐阅读
- css - CSS网格,Angular 6不听媒体查询
- apache-flink - 我可以将 flink RocksDB 状态后端与本地文件系统一起使用吗?
- html - 裁剪的图片库不允许 div 覆盖在图片上显示文本
- c# - 如何仅使用 OLEDB C# SSIS 在 Excel 文件中创建现有 Excel 工作表(表)的新副本
- marklogic - MarkLogic 9 - 在原始模式下显示部分结果
- swift - 解构赋值是否保证在 Swift 中是并行赋值?
- r - 最高浓度区
- php - 修复函数未定义变量不起作用
- pyramid - 如何复制金字塔项目?
- ember.js - 是否可以在 routerjs 文件中创建重定向规则以创建虚荣路由