Python 修改CSV文件实例详解

目录
  • 前言
  • Python 修改CSV文件

前言

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

Python 修改CSV文件

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

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

User name Movie name rating
1 Star Wars 7.8
2 Back to Future 8
2 Batman 7.7
3 Spy 007 8.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文件的资料请关注我们其它相关文章!

(0)

相关推荐

  • Python中CSV文件(逗号分割)实战操作指南

    目录 一.csv文件介绍 1.csv文件简介 2.为什么要使用csv文件 二.csv文件查看 1.测试文件创建 2.查看csv文件(列表) 3.查看csv文件(字典) 4.写入文件(列表) 5.写入文件(字典) 总结 一.csv文件介绍 1.csv文件简介 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本).纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据.CSV

  • Python批量将csv文件编码方式转换为UTF-8的实战记录

    当我们用pandas是操作CSV文件的时候,常常会因为编码问题出现报错. pandas_libs\parsers.pyx in pandas._libs.parsers.TextReader.read() pandas_libs\parsers.pyx in pandas._libs.parsers.TextReader._read_low_memory() pandas_libs\parsers.pyx in pandas._libs.parsers.TextReader._read_rows

  • 利用python合并csv文件的方式实例

    目录 1.用concat方法合并csv 2.glob模块批量合并csv 补充:Python处理(加载.合并)多个csv文件 总结 1.用concat方法合并csv 将两个相同的csv文件进行数据合并,通过pandas的read_csv和to_csv来完成,即采用concat方法: #加载第三方库 import pandas as pd import numpy as np #读取文件 df1 = pd.read_csv("文件-1.csv") df2 = pd.read_csv(&qu

  • Python如何利用pandas读取csv数据并绘图

    目录 如何利用pandas读取csv数据并绘图 绘制图像 展示结果 pandas画pearson相关系数热力图 pearson相关系数计算函数 如何利用pandas读取csv数据并绘图 导包,常用的numpy和pandas,绘图模块matplotlib, import matplotlib.pyplot as plt import pandas as pd import numpy as np fig = plt.figure() ax = fig.add_subplot(111) 读取csv文

  • Python使用read_csv读数据遇到分隔符问题的2种解决方式

    目录 1.更改read_csv函数中的传参“sep” 1.1缺省sep参数 1.2不缺省sep参数 1.2.1要读入的文档中分隔符为一位字符 1.2.2要读入的文档中分隔符为多位字符 2.利用记事本功能进行分隔符替换 2.1利用txt中的“编辑”—>“替换”操作 2.2小tips 补充:Python read_csv 报错:‘gbk‘ codec can‘t decode byte 0xb4 in position 8: illegal multibyte sequence 总结 用read_c

  • Python全面解析json数据并保存为csv文件

    目录 解析json数据并保存为csv文件 完整代码 将json任意行文件转为csv文件并保存 将json格式的前3000条数据存入csv 解析json数据并保存为csv文件 首先导入两个包: import json import pandas as pd 打开json 文件并读取: with open('2.json', encoding='utf-8') as f:     line = f.readline()     d = json.loads(line)     f.close() 读

  • Python 修改CSV文件实例详解

    目录 前言 Python 修改CSV文件 前言 由于 CSV 文件仅仅是简单的文本文件,因此更新 CSV 文件中内容的最佳方式是首先读取文件中的数据,并将它们处理为 Python 内部对象,进行更改,然后以相同的格式覆盖原始数据. Python 修改CSV文件 在本节中,我们将学习如何使用 Python 修改 CSV 文件中的数据. 假设在CSV文件中有以下数据,其中用户 '1' 对电影 'Star Wars' 的评分有误,其实际评分为 7.9,因此需要修改此文件. User name Movi

  • Python操作csv文件实例详解

    一.Python读取csv文件 说明:以Python3.x为例 #读取csv文件方法1 import csv csvfile = open('csvWrite.csv',newline='')#打开一个文件 csvReader = csv.reader(csvfile)#返回的可迭代类型 print(type(csvReader)) for content in csvReader: print(content) csvfile.close()#关闭文件 //运行结果如下: <class '_c

  • Java生成CSV文件实例详解

    本文实例主要讲述了Java生成CSV文件的方法,具体实现步骤如下: 1.新建CSVUtils.java文件: package com.saicfc.pmpf.internal.manage.utils; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputS

  • python读写xml文件实例详解嘛

    目录 xml文件:country.xml xml文件解读 读取文件: 增加新节点及修改属性值和文本 总结 xml文件:country.xml <data> <country name="shdi2hajk">231 <rank>1<NewNode A="1">This is NEW</NewNode></rank> <year>2008</year> <gdppc&

  • 对python读取zip压缩文件里面的csv数据实例详解

    利用zipfile模块和pandas获取数据,代码比较简单,做个记录吧: # -*- coding: utf-8 -*- """ Created on Tue Aug 21 22:35:59 2018 @author: FanXiaoLei """ from zipfile import ZipFile import pandas as pd myzip=ZipFile('2.zip') f=myzip.open('2.csv') df=pd.r

  • python 读取excel文件生成sql文件实例详解

    python 读取excel文件生成sql文件实例详解 学了python这么久,总算是在工作中用到一次.这次是为了从excel文件中读取数据然后写入到数据库中.这个逻辑用java来写的话就太重了,所以这次考虑通过python脚本来实现. 在此之前需要给python添加一个xlrd模块,这个模块是专门用来操作excel文件的. 在mac中可以通过easy_install xlrd命令实现自动安装模块 import xdrlib ,sys import xlrd def open_excel(fil

  • 对python 读取线的shp文件实例详解

    如下所示: import shapefile sf = shapefile.Reader("E:\\1.2\\cs\\DX_CSL.shp") shapes = sf.shapes() print shapes[1].parts print len(shapes) #79条记录 #print len(list(sf.iterShapes())) #79条记录 #for name in dir(shapes[3]): #不带参数时,返回当前范围内的变量.方法和定义的类型列表:带参数时,返

  • Python操作xlwings的实例详解

    目录 数据来源 上手 pandas读取表1-2的数据 xlwings获取表1-1sheet xlwings修改表1-1数据 总结 阿里云产品费用巡检,一般流程是登录账号,再逐项核对填写.虽然简单,但如果帐号多表格多,帐号间的数据有关联,填写起来就比较费力气.几张表格,可能从下载数据到核写完毕,辗转半个小时. 因此在保留excel原文件格式不变的基础上,自动填写相关数值变得重要. python操作excel的模块多,xlrd,pandas,xlwings,openpyxl.经常搞不清这么多功能类似

  • python模块常用用法实例详解

    1.time模块(※※※※) import time #导入时间模块 print(time.time()) #返回当前时间的时间戳,可用于计算程序运行时间 print(time.localtime()) #返回当地时间的结构化时间格式,参数默认为时间戳 print(time.gmtime) #返回UTC时间的结构化时间格式 print(time.mktime(time.localtime())) #将结构化时间转换为时间戳 print(time.strftime("%Y-%m-%d %X&quo

  • Python 迭代器与生成器实例详解

    Python 迭代器与生成器实例详解 一.如何实现可迭代对象和迭代器对象 1.由可迭代对象得到迭代器对象 例如l就是可迭代对象,iter(l)是迭代器对象 In [1]: l = [1,2,3,4] In [2]: l.__iter__ Out[2]: <method-wrapper '__iter__' of list object at 0x000000000426C7C8> In [3]: t = iter(l) In [4]: t.next() Out[4]: 1 In [5]: t.

随机推荐