使用 Python 处理 CSV 文件,附示例

简介: 在本文中,我们将学习如何在CSV 文件使用 Python 读取和写入数据,以及如何将 CSV 文件转换为 JSON 格式,反之亦然。我们将探讨如何使用 csv 模块,并查看有助于理解其工作原理的示例。

使用 Python 处理 CSV 文件,附示例


在本文中,我们将学习如何在CSV 文件使用 Python 读取和写入数据,以及如何将 CSV 文件转换为 JSON 格式,反之亦然。我们将探讨如何使用 csv 模块,并查看有助于理解其工作原理的示例。

CSV comma-separated values)文件是一种文本文件格式,允许以表格结构保存数据这是一种流行的格式,用于从数据库和电子表格导出和导入数据。

顾名思义,CSV 文件中的每条数据都用逗号 (,) 分隔。有时,术语“CSV”可用于描述具有其他类型分隔符的格式,例如冒号 (:)、分号 (;) 和制表符 (\t)。出于本文的目的,我们将仅处理使用逗号作为分隔符的 CSV 文件(RFC 4180)。

打开后,CSV 文件的内容如下所示:


Employee Id,First Name,Gender,StartDate,Last Login Time,Salary,Bonus %,Senior Management,Team
1,Douglas,Male,8/6/1993,12:42 PM,,6.945,TRUE,Marketing
2,Thomas,Male,3/31/1996,6:53 AM,61933,4.17,,
3,Maria,Female,4/23/1993,11:17 AM,,11.858,FALSE,Finance
4,Jerry,Male,3/4/2005,1:00 PM,138705,9.34,,Finance


如上所示,逗号分隔符 , ,用于分隔文件中的每个特定数据。

第一行数据可以选择用作标题,标明其下方的每一列数据。CSV 文件通常以 .csv 文件扩展名保存。


csv 模块

由于电子表格和 数据库(例如 MS SQL) 可以作为 CSV 文件导入和导出,因此了解如何以编程方式处理以 CSV 格式提供的数据非常重要。大多数编程语言(例如 Python)都支持处理 CSV 文件,并将其转换为其他格式(例如 JSON)。

Python 提供了 csv模块,用于以 CSV 格式 读取、写入和执行其他形式的 文件处理。内置库提供了可无缝处理 CSV 文件的函数和类。


如何使用 Python 读取 CSV 文件

csv模块有 csv.reader() 函数可以读取CSV文件。它可以和对象(包括文件对象)一起使用,例如使用 Python 内置 open() 函数生成的对象。

调用open()函数生成的一个文件对象csv.reader() 将返回一个读取器对象。读取器对象将迭代 CSV 数据的每一行,其中行作为字符串列表返回。

让我们举个例子:


import csvwithopen('employees.csv', newline='')as file_obj:
    reader_obj = csv.reader(file_obj)for row in reader_obj:print(row)


这是上面代码的输出:


['Employee Id','First Name','Gender', 'StartDate', 'Last Login Time', 'Salary', 'Bonus %', 'Senior Management', 'Team']
['1', 'Douglas', 'Male', '8/6/1993', '12:42 PM', '', '6.945', 'TRUE', 'Marketing']
['2', 'Thomas', 'Male', '3/31/1996', '6:53 AM', '61933', '4.17', '', '']
['3', 'Maria', 'Female', '4/23/1993', '11:17 AM', '', '11.858', 'FALSE', 'Finance']
['4', 'Jerry', 'Male', '3/4/2005', '1:00 PM', '138705', '9.34', '', 'Finance']
['5', 'Larry', 'Male', '1/24/1998', '4:47 PM', '101004', '1.389', 'TRUE', 'Client Services']
...


从第一个代码片段开始, employees.csv 文件被打开,之后 csv.reader() 函数解析它并返回一个读取器对象。employees.csv 使用简单的 for 循环来迭代读取器对象,该对象从文件的每一行(从顶部开始)返回数据列表 。


如何使用 Python 写入 CSV 文件

除了从 CSV 文件读取数据之外,我们还可以用 Python 将数据写入这些文件。csv.writer() 函数使我们能够以CSV 格式写入数据。以写入模式打开文件后, csv.writer() 函数返回一个编写器对象,编写器对象文件对象上提供的数据转换为被分隔的字符串。编写器对象具有 writerow()方法,用于写入单行数据(每次以逗号分隔的字符串或数值的可迭代值),而 writerows() 方法一次用于多行。writerow()和  writerows()方法只是将数据写入 CSV 文件的两个选项

上面的代码片段中使用的所有对象列表都可以组成一个 2D 列表,并作为参数传递给编写器对象的writerows()方法,可以实现相同的结果。

执行with语句后 ,将在当前工作目录中创建一个包含这些逗号分隔值的 CSV 文件 ( products.csv)。

这是一个例子:


import csvwithopen('products.csv','w', newline='')as file_obj:
    writer_obj = csv.writer(file_obj)
    writer_obj.writerow(['Product Name','Price','Quantity','SKU Number'])
    writer_obj.writerow(['Rice',80,35,'RI59023'])
    writer_obj.writerow(['Curry',2,200,'CY13890'])
    writer_obj.writerow(['Milk',9.5,315,'MK10204'])


这是上面代码的输出:


Product Name,Price,Quantity,SKU Number
Rice,80,35,RI59023
Curry,2,200,CY13890
Milk,9.5,315,MK10204


如何使用 Python 将 CSV 转换为 JSON

在执行文件 I/O 操作时,我们可能希望将 CSV 文件转换为 JSON 格式,这种格式常用于在客户端和服务器之间接收和传输数据。csv模块提供了 csv.DictReader 类来帮助我们实现这一点。

csv.DictReader方法将给定的 CSV 文件转换为 Python 字典,然后再应用 json 模块的 json.dump() 函数将生成的 Python 字典转换为 JSON 文件。 csv.DictReader()采用可选 fieldnames 参数。如果省略字段名称,则第一行中的值将作为字段名称映射到其余数据。

让我们看一个例子:


import csv
import json
my_dict ={}withopen('employees.csv', newline='')as file_obj:
    reader_object = csv.DictReader(file_obj)for row in reader_object:
        key = row['Employee Id']
        my_dict[key]= rowwithopen('employee.json','w', encoding='utf-8')as file_obj:
    json.dump(my_dict, file_obj, indent=4)


这是上面代码的输出:


"1":{"Employee Id":"1","First Name":"Douglas","Gender":"Male","Start Date":"8/6/1993","Last Login Time":"12:42 PM","Salary":"","Bonus %":"6.945","Senior Management":"TRUE","Team":"Marketing"},"2":{"Employee Id":"2","First Name":"Thomas","Gender":"Male","Start Date":"3/31/1996","Last Login Time":"6:53 AM","Salary":"61933","Bonus %":"4.17","Senior Management":"","Team":""},...


要将 CSV 文件转换为等效的 JSON 文件,我们使用了以下步骤:

  • 以读取模式打开 employees.csv文件
  • 使用csv.DictReader从返回的文件对象创建一个 Python 字典
  • 以写入模式打开一个 JSON 文件,例如 employees.json (如果不存在这样的文件,则会创建一个)
  • 使用 json模块dump() 函数将Python字典(my_dict)转换为JSON文件



如何使用 Python 将 JSON 转换为 CSV

在本节中,我们将了解如何将数据从 JSON 文件转换为 CSV 格式。为了实现这一点,我们将使用内置的 csvjson  Python 模块。json 模块的json.load() 函数将帮助将 JSON 文件转换为 Python 字典,而 csv 模块的 csv.DictWiter 类方法将帮助将 Python 字典转换为 CSV 文件

这是一个例子:


import csv
import json
py_dict ={}# convert json file to python dictionarywithopen('employees.json','r', encoding='utf-8')as file_obj:
    py_dict = json.load(file_obj)# convert write python dictionary to csvwithopen('employees_records.csv','w', newline='')as file_obj:
    csv_writer = csv.DictWriter(file_obj, fieldnames=py_dict['1'].keys())
    csv_writer.writeheader()for key in py_dict.keys():
        csv_writer.writerow(py_dict[key])


要将 JSON 文件转换为 CSV 等效文件,我们使用了以下步骤:

  • 以读取模式打开 employees.json文件
  • 使用 json.load() 函数创建Python字典 py_dict
  • 以写入模式打开一个 CSV 文件 employees_records.csv (如果不存在此类文件,则会创建一个)
  • 使用csv.DictWriter创建了一个带有必要参数的编写器对象
  • 使用编写器对象方法将字典映射到适当的行数


结论

CSV 文件非常流行,经常用于导出和导入电子表格和数据库。处理数据的人员经常使用这种文件格式。然而,在使用 Python 编程时,可能需要快速使用 CSV 文件,因此了解如何使用 CSV 执行文件 I/O 操作非常重要。

Python 的 csv 模块对于处理 CSV 文件非常方便,因为它为此类任务提供了必要的函数和类。

还需要注意的是,我们可能需要将文件从一种格式转换为另一种格式(CSV 到 JSON),如上面的示例所示。



相关文章
|
10月前
|
数据可视化 Linux iOS开发
Python脚本转EXE文件实战指南:从原理到操作全解析
本教程详解如何将Python脚本打包为EXE文件,涵盖PyInstaller、auto-py-to-exe和cx_Freeze三种工具,包含实战案例与常见问题解决方案,助你轻松发布独立运行的Python程序。
2186 2
|
9月前
|
监控 机器人 编译器
如何将python代码打包成exe文件---PyInstaller打包之神
PyInstaller可将Python程序打包为独立可执行文件,无需用户安装Python环境。它自动分析代码依赖,整合解释器、库及资源,支持一键生成exe,方便分发。使用pip安装后,通过简单命令即可完成打包,适合各类项目部署。
1504 68
|
12月前
|
JSON API UED
运营商二要素验证 API:核验身份的一致性技术实践(Python示例)
随着线上业务快速发展,远程身份核验需求激增。运营商二要素验证API通过对接三大运营商实名数据,实现姓名、手机号、身份证号的一致性校验,具备权威性高、实时性强的优势,广泛应用于金融、电商、政务等领域。该接口支持高并发、低延迟调用,结合Python示例可快速集成,有效提升身份认证的安全性与效率。
1099 0
|
12月前
|
JSON API 数据格式
Python采集京东商品评论API接口示例,json数据返回
下面是一个使用Python采集京东商品评论的完整示例,包括API请求、JSON数据解析
|
12月前
|
测试技术 API 开发者
淘宝关键词搜索商品列表API接入指南(含Python示例)
淘宝关键词搜索商品列表API是淘宝开放平台的核心接口,支持通过关键词检索商品,适用于比价、选品、市场分析等场景。接口提供丰富的筛选与排序功能,返回结构化数据,含商品ID、标题、价格、销量等信息。开发者可使用Python调用,需注意频率限制与错误处理,建议先在沙箱环境测试。
|
12月前
|
编译器 Python
如何利用Python批量重命名PDF文件
本文介绍了如何使用Python提取PDF内容并用于文件重命名。通过安装Python环境、PyCharm编译器及Jupyter Notebook,结合tabula库实现PDF数据读取与处理,并提供代码示例与参考文献。
|
12月前
|
编译器 Python
如何利用Python批量重命名文件
本文介绍了如何使用Python和PyCharm对文件进行批量重命名,包括文件名前后互换、按特定字符调整顺序等实用技巧,并提供了完整代码示例。同时推荐了第三方工具Bulk Rename Utility,便于无需编程实现高效重命名。适用于需要处理大量文件命名的场景,提升工作效率。
|
11月前
|
缓存 数据可视化 Linux
Python文件/目录比较实战:排除特定类型的实用技巧
本文通过四个实战案例,详解如何使用Python比较目录差异并灵活排除特定文件,涵盖基础比较、大文件处理、跨平台适配与可视化报告生成,助力开发者高效完成目录同步与数据校验任务。
334 0
|
11月前
|
数据采集 索引 Python
Python Slice函数使用教程 - 详解与示例 | Python切片操作指南
Python中的`slice()`函数用于创建切片对象,以便对序列(如列表、字符串、元组)进行高效切片操作。它支持指定起始索引、结束索引和步长,提升代码可读性和灵活性。
|
12月前
|
安全 Linux 网络安全
Python极速搭建局域网文件共享服务器:一行命令实现HTTPS安全传输
本文介绍如何利用Python的http.server模块,通过一行命令快速搭建支持HTTPS的安全文件下载服务器,无需第三方工具,3分钟部署,保障局域网文件共享的隐私与安全。
2947 0

推荐镜像

更多