找回密码
 会员注册
查看: 24|回复: 0

python的csv库常用操作

[复制链接]

3

主题

0

回帖

10

积分

新手上路

积分
10
发表于 2024-9-9 10:34:36 | 显示全部楼层 |阅读模式
csv模块是Python标准库中的一个模块,用于处理CSV(逗号分隔值)文件。它提供了简单易用的功能来读取和写入CSV文件。以下是一些常用的操作:一、读取CSV文件新建文件data.csv,内容如下:使用csv.reader读取CSV文件使用reader之前先要使用python的内置标准函数open()打开文件。open()的用法见:python的open()函数-CSDN博客importcsvwithopen('data.csv',mode='r',newline='')asfile: csv.reader(file)创建的reader对象是一个迭代器,用于逐行读取CSV文件中的数据。reader对象的格式是一个生成器对象,每次迭代返回一行数据,每一行数据以列表的形式呈现,每个列表元素对应CSV文件中的一个字段(单元格)。逐行打印reader数据:importcsvwithopen('data.csv',mode='r',newline='')asfile:reader=csv.reader(file)forrowinreader:print(row)打印输出结果:['line0_0','line0_1','line0_2','line0_3','line0_4','line0_5']['line1_0','line1_1','line1_2','line1_3','line1_4','line1_5']['line2_0','line2_1','line2_2','line2_3','line2_4','line2_5']['line3_0','line3_1','line3_2','line3_3','line3_4','line3_5']['line4_0','line4_1','line4_2','line4_3','line4_4','line4_5']['line5_0','line5_1','line5_2','line5_3','line5_4','line5_5'] 将reader数据转换为列表:importcsvwithopen('data.csv',mode='r',newline='')asfile:reader=csv.reader(file)csv_data=list(reader)打印输出结果:[['line0_0','line0_1','line0_2','line0_3','line0_4','line0_5'],['line1_0','line1_1','line1_2','line1_3','line1_4','line1_5'],['line2_0','line2_1','line2_2','line2_3','line2_4','line2_5'],['line3_0','line3_1','line3_2','line3_3','line3_4','line3_5'],['line4_0','line4_1','line4_2','line4_3','line4_4','line4_5'],['line5_0','line5_1','line5_2','line5_3','line5_4','line5_5'],['','','','','',''],['','','','','',''],['','','','','',''],['','','','','',''],['','','','','','']]​csv.reader对象的特性返回类型:csv.reader对象的每一项是一个列表,每个列表表示CSV文件中的一行数据。列表中的元素是每个字段的值。迭代方式:csv.reader是一个迭代器,可以使用for循环逐行遍历CSV文件。默认分隔符:csv.reader默认使用逗号(,)作为字段分隔符,但你可以通过设置delimiter参数来使用其他分隔符,如分号(;)。 reader=csv.reader(file,delimiter=';')引号处理:csv.reader可以处理字段中的引号。默认情况下,它会将被引号括起来的字段视为一个单独的字段,并自动处理字段中的引号和转义字符。reader=csv.reader(file,quotechar='"') 例如,data.csv的内容如下:importcsvwithopen('data.csv',newline='',encoding='gbk')ascsvfile:reader=csv.reader(csvfile,quotechar='"')forrowinreader:print(row) 输出结果:['A','B']['A,B'] 在这个例子中,第一行中的逗号是字段之间的分隔符,第二行的逗号被双引号包围,这个逗号不被解释为字段之间的分隔符,而是作为一个字段中的字符存在。转义符:escapecharescapechar参数用于指定一个转义字符。在CSV文件中,如果某个字段中包含了quotechar指定的字符,并且您不希望这个字符被解释为字段的边界,您可以使用escapechar来转义它。转义字符通常出现在要转义的字符之前,表示该字符应该按字面意义解释,而不是作为特殊字符。​ importcsvwithopen('data.csv',newline='',encoding='gbk')ascsvfile:reader=csv.reader(csvfile,quotechar='"',escapechar='\\')forrowinreader:print(row)输出结果:['Trunpm','30','Hesaid,"Hello!"'] Hesaid前面的双引号和末尾的双引号,由于没有转义符,就被识别为字段的边界。而Hello!处的双引号有转义符,就被识别为字符双引号。当然,除了"\",也可以使用别的字符作为转义符。例如:importcsvwithopen('data.csv',newline='',encoding='gbk')ascsvfile:reader=csv.reader(csvfile,quotechar='"',escapechar='#')forrowinreader:print(row)输出结果相同。csv.DictReader使用 csv.DictReader 从CSV文件中读取数据,并将每一行数据转换为字典格式。读CSV文件并将其转换为字典的示例:importcsv#打开CSV文件进行读取withopen('output.csv',mode='r',newline='')asfile:#创建DictReader对象reader=csv.DictReader(file)#读取数据并打印forrowinreader:print(row)二、写入csv文件使用csv.writer写入importcsvdata=[["Name","Age","City"],["Alice","30","NewYork"],["Bob","25","LosAngeles"]]withopen('output.csv',mode='w',newline='')asfile:writer=csv.writer(file)writer.writerows(data)csv.writer(file):创建一个CSV写入器对象。writer.writerows(data):将data中的所有行写入CSV文件。基本的写入和读取importcsv#读取withopen('data.csv',mode='r',newline='')asfile:reader=csv.reader(file)data=list(reader)#写入withopen('output.csv',mode='w',newline='')asfile:writer=csv.writer(file)writer.writerows(data)#再次读取withopen('output.csv',mode='r',newline='')asfile:reader=csv.reader(file)data=list(reader)print(data)使用csv.DictWriter写入importcsvfieldnames=['Name','Age','City']data=[{'Name':'Alice','Age':'30','City':'NewYork'},{'Name':'Bob','Age':'25','City':'LosAngeles'}]withopen('output.csv',mode='w',newline='')asfile:writer=csv.DictWriter(file,fieldnames=fieldnames)writer.writeheader()writer.writerows(data)csv.DictWriter(file,fieldnames=fieldnames):创建一个字典写入器对象。fieldnames指定了字典的键的顺序。writer.writeheader():写入CSV文件的头部(列名)。writer.writerows(data):将字典数据写入CSV文件。读和写的demo:importcsvfieldnames=['Name','Age','City']data=[{'Name':'Alice','Age':'30','City':'NewYork'},{'Name':'Bob','Age':'25','City':'LosAngeles'}]withopen('output.csv',mode='w',newline='')asfile:writer=csv.DictWriter(file,fieldnames=fieldnames)writer.writeheader()writer.writerows(data)withopen('output.csv',mode='r',newline='')asfile:reader=csv.DictReader(file)data=list(reader)print(data) 输出结果:[{'Name':'Alice','Age':'30','City':'NewYork'},{'Name':'Bob','Age':'25','City':'LosAngeles'}]三、不同的分隔符CSV文件的分隔符默认是逗号(,),但有时候需要使用其他分隔符,例如分号(;)。可以通过设置delimiter参数来指定不同的分隔符。importcsv#读取使用分号作为分隔符的CSV文件withopen('input.csv',mode='r',newline='')asfile:reader=csv.reader(file,delimiter=';')forrowinreader:print(row)#写入使用分号作为分隔符的CSV文件withopen('output.csv',mode='w',newline='')asfile:writer=csv.writer(file,delimiter=';')writer.writerows(data)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 会员注册

本版积分规则

QQ|手机版|心飞设计-版权所有:微度网络信息技术服务中心 ( 鲁ICP备17032091号-12 )|网站地图

GMT+8, 2025-1-10 14:14 , Processed in 0.620398 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表