5/5 - (1票)
将 CSV 文件转换为 Python 字典的最好方法是使用open("my_file.csv") 创建一个 CSV 文件对象f 并将其传入csv.DictReader(f) 方法。返回值是一个可迭代的字典,在 CSV 文件中每行一个,它将第一行的列头映射到特定的行值。
接下来让我们看一下一个简单的例子来演示这个解决方案吧
基本解决方案。CSV到Dict的例子
下面是一个CSV文件的内容,"my_file.csv" ,用于我们下面的代码片断。
Name,Job,Age,Income
Alice,Programmer,23,110000
Bob,Executive,34,90000
Carl,Sales,45,50000
如果你把这个CSV文件以表格的形式可视化,它看起来像这样。
| 名称 | 工作 | 年龄 | 收入 |
|---|---|---|---|
| 爱丽丝 | 程序员 | 23 | 110000 |
| 鲍勃 | 行政人员 | 34 | 90000 |
| 卡尔 | 销售人员 | 45 | 50000 |
下面是将CSV文件转换成多个字典的代码,通过使用csv.DictReader(file) 函数,每行一个字典。
import csv
csv_filename = 'my_file.csv'
with open(csv_filename) as f:
reader = csv.DictReader(f)
for row in reader:
print(row)
字典是一个数据结构,它将键映射到值。
前面的代码片段的输出显示了CSV的第一行是如何被用作头来确定字典的键,这些键被映射到CSV文件的各个行中定义的值。
{'Name': 'Alice', 'Job': 'Programmer', 'Age': '23', 'Income': '110000'}
{'Name': 'Bob', 'Job': 'Executive', 'Age': '34', 'Income': '90000'}
{'Name': 'Carl', 'Job': 'Sales', 'Age': '45', 'Income': '50000'}
csv.DictReader(f) 方法需要一个文件对象f 作为输入参数。因此,你首先需要使用内置的Python [open()](https://blog.finxter.com/python-open-function/)函数。
注意:一个常见的错误是把文件名作为一个字符串来传递--但这是行不通的! 方法希望有一个文件对象作为必要参数。
csv.DictReader(f)
单行的解决方案。CSV 到 Dict
我喜欢Python单行线。这就是为什么我写了一本关于这些的书。
那么,我们能不能在Python的一行中把CSV转换为一个字典列表?
当然,我们可以!
这里的单行代码与之前讨论的代码完成了同样的任务。
import csv; print(*csv.DictReader(open('my_file.csv')), sep='\n')
解释一下。我们导入 模块,使用
csv.DictReader() csv 分号 ; 在一行中打包两个语句,在 语句中print 解压 * 输出的所有行,并使用换行符 作为两个字典行之间的'\n' 分隔符。
输出结果和以前一样。
{'Name': 'Alice', 'Job': 'Programmer', 'Age': '23', 'Income': '110000'}
{'Name': 'Bob', 'Job': 'Executive', 'Age': '34', 'Income': '90000'}
{'Name': 'Carl', 'Job': 'Sales', 'Age': '45', 'Income': '50000'}
如果你只想把CSV内容存储在字典列表中,而不是打印它们,你可以使用下面的技术。
import csv; lst=[*csv.DictReader(open('my_file.csv'))]; print(lst)
输出是一个字典列表,原始CSV的每一行(非标题)有一个。
[{'Name': 'Alice', 'Job': 'Programmer', 'Age': '23', 'Income': '110000'}, {'Name': 'Bob', 'Job': 'Executive', 'Age': '34', 'Income': '90000'}, {'Name': 'Carl', 'Job': 'Sales', 'Age': '45', 'Income': '50000'}]
如果你也对学习单行线感兴趣,请随时查看我的书。
Python One-Liners Book。首先要掌握单行字!
Python程序员将通过这些有用的单线句子提高他们的计算机科学技能。
Python单行线 将教你如何读和写 "单行本"。 简洁的有用功能声明被装入一行代码。 你将学会如何系统地解读和理解任何一行Python代码,并像专家一样写出雄辩的、具有强大压缩能力的Python。
本书的五个章节涵盖了(1)技巧和窍门,(2)正则表达式,(3)机器学习,(4)核心数据科学主题,和(5)有用的算法。
对单行线的详细解释介绍了 关键的计算机科学概念 和提高你的编码和分析能力.你将了解高级Python特性,如 列表理解, 分片, lambda函数, 正则表达式, 地图 和 减少 职能,以及 分片作业.
你还将学习如何
- 利用数据结构来解决现实世界的问题,比如使用布尔索引来寻找污染高于平均水平的城市
- 使用NumPy的基础知识,如数组、形状、轴、类型、广播、高级索引、切片、排序、搜索、聚合和统计等
- 计算多维数据数组的基本统计数据 和无监督学习的K-Means算法
- 使用分组 和命名组、负数看头、转义字符、空白、字符集(和负数字符集)以及贪婪/非贪婪运算符创建更高级的正则表达式
- 理解广泛的计算机科学主题,包括八卦、宫格、超集、排列组合、阶乘、素数、斐波那契数 、混淆、搜索和算法排序。
在本书结束时,你将知道如何 以最精炼的方式编写Python并仅用一行就能创建简明、漂亮的 "Python 艺术 "作品。