Python 修改CSV文件实例详解

 更新时间:2022年08月26日 10:59:42   作者:盼小辉丶  
这篇文章主要为大家介绍了Python 修改CSV文件实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

前言

由于 CSV 文件仅仅是简单的文本文件,因此更新 CSV 文件中内容的最佳方式是首先读取文件中的数据,并将它们处理为 Python 内部对象,进行更改,然后以相同的格式覆盖原始数据。

Python 修改CSV文件

在本节中,我们将学习如何使用 Python 修改 CSV 文件中的数据。

假设在CSV文件中有以下数据,其中用户 '1' 对电影 'Star Wars' 的评分有误,其实际评分为 7.9,因此需要修改此文件。

User nameMovie namerating
1Star Wars7.8
2Back to Future8
2Batman7.7
3Spy 0078.3

首先,导入 csv 模块并定义文件名:

>>> import csv
>>> file_name = 'movies_rating.csv'

导入 csv 模块后,我们从指定 csv 文件中提取所有数据。为了便于操作,我们在 with 块中打开该文件,在文件使用完毕后可以自动关闭文件句柄。

使用 DictReader 可以非常方便地将数据转换为字典列表,其中标头作为键,单元格中的内容作为值,例如第一行的数据被转换为 {'User name': 1, 'Movie name': 'Star Wars', 'rating':7.8}

然后,我们可以操作和修改格式化后的数据。

使用 DictReader 读取文件的内容并将此内容转换为数据行的列表:

>>> with open(file_name, newline='') as f:
...     data = [row for row in csv.DictReader(f)]
...

检查获得的数据,将文件中第一个评分记录中的评分数据从 7.8 修改为 7.9,解决数据错误问题:

>>> data
[OrderedDict([('User name', '001'), ('Movie name', 'Star Wars'), ('rating', '7.8')]), OrderedDict([('User name', '002'), ('Movie name', 'Back to Future'), ('rating', '8.0')]), OrderedDict([('User name', '002'), ('Movie name', 'Batman'), ('rating', '7.7')]), OrderedDict([('User name', '003'), ('Movie name', 'Spy 007'), ('rating', '8.3')])]
>>> data[0]['rating']
'7.8'
>>> data[0]['rating'] = 7.9

在本节中,我们通过直接访问行号来修改数据,但在通常情况下,我们可能需要首先搜索特定信息,确定相应行后再进行修改。

再次打开文件并存储修改后的数据记录:

>>> header = data[0].keys()
>>> with open(file_name, 'w', newline='') as f:
...     writer = csv.DictWriter(f, fieldnames=header)
...     writer.writeheader()
...     writer.writerows(data)
...

数据修改后,我们直接覆盖原文件并使用 DictWriter 存储数据。DictWriter 需要通过声明字段名 (fieldnames=header) 来定义列上的字段,为了获得这些字段名,我们可以先读取其中一行数据字典的键并将它们存储在 header 中。

原文件以 w 模式再次打开以覆盖它。DictWriter 首先使用 writeheader 存储标头,然后通过调用 writerows() 一次存储所有行。我们也可以通过调用 writerow() 方法每次写入一行数据。

在电子表格软件中检查结果。在下图中可以看到,该文件使用 WPS 软件打开显示,可以看到第一行的评分数据已经被修改:

以上就是Python 修改CSV文件实例详解的详细内容,更多关于Python 修改CSV文件的资料请关注脚本之家其它相关文章!

相关文章

  • Python pandas入门系列之众数和分位数

    Python pandas入门系列之众数和分位数

    分位数(Quantile),也称分位点,是指将一个随机变量的概率分布范围分为几个等份的数值点,分析其数据变量的趋势,而众数(Mode)是代表数据的一般水平,这篇文章主要给大家介绍了Python pandas系列之众数和分位数的相关资料,需要的朋友可以参考下
    2021-08-08
  • Python基于正则表达式实现计算器功能

    Python基于正则表达式实现计算器功能

    这篇文章主要介绍了Python基于正则表达式实现计算器功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • 一文掌握Python正则表达式

    一文掌握Python正则表达式

    这篇文章主要介绍了Python正则表达式的相关知识,主要包括re模块的使用及正则表达式基础知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • python单例设计模式实现解析

    python单例设计模式实现解析

    这篇文章主要介绍了python单例设计模式实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • Python使用shutil模块实现文件拷贝

    Python使用shutil模块实现文件拷贝

    这篇文章主要介绍了Python使用shutil模块实现文件拷贝,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • numpy 计算两个数组重复程度的方法

    numpy 计算两个数组重复程度的方法

    今天小编就为大家分享一篇numpy 计算两个数组重复程度的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • python使用IP归属地查询API追踪网络活动

    python使用IP归属地查询API追踪网络活动

    这篇文章主要为大家介绍了python使用IP归属地查询API追踪网络活动实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • Python3之不使用第三方变量,实现交换两个变量的值

    Python3之不使用第三方变量,实现交换两个变量的值

    今天小编就为大家分享一篇Python3之不使用第三方变量,实现交换两个变量的值,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • Swin Transformer图像处理深度学习模型

    Swin Transformer图像处理深度学习模型

    这篇文章主要为大家介绍了Swin Transformer图像处理深度学习模型详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Python中异常捕获与处理的方法总结

    Python中异常捕获与处理的方法总结

    Python异常是在程序执行时发生的错误,可能会导致程序终止运行。这篇文章主要为大家总结了Python中异常捕获与处理的方法,需要的可以参考一下
    2023-04-04

最新评论