千家信息网

python如何内置csv模块

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章主要介绍"python如何内置csv模块",在日常操作中,相信很多人在python如何内置csv模块问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"python如
千家信息网最后更新 2025年01月20日python如何内置csv模块

这篇文章主要介绍"python如何内置csv模块",在日常操作中,相信很多人在python如何内置csv模块问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"python如何内置csv模块"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

csv(Comma-Separated Values)文件是什么?

它是一种文件格式,一般也被叫做逗号分隔值文件,可以使用 Excel 软件或者文本文档打开 。
其中数据字段用半角逗号间隔(也可以使用其它字符),使用 Excel 打开时,逗号会被转换为分隔符。
csv 文件是以纯文本形式存储了表格数据,并且在兼容各个操作系统。

例如下面的文本,在 excel 中就以表格的形式存在。

sid,name,age
10010,橡皮擦,18
10086,发量迷人的乔喻,19
10000,各位博主,20

下面就对 python 内置模块 csv 的用法进行简单的说明。

python 中的 csv 文件清晰解法

读取文件

使用 csv.reader() 读取 csv 文件内容。

import csv  # 模块导入with open('aa.csv', 'r', newline='', encoding='utf-8') as f:        # <_csv.reader object at 0x00000000020918D0>    reader = csv.reader(f)    for r in reader:        print(r)

其中 csv.reader() 方法的原型如下所示:

csv.reader(csvfile, dialect='excel', **fmtparams)

其中的参数 csvfile 可以是任何对象,但要求该对象是一个迭代器,所以文件对象和列表对象都可以传入,如果是文件对象,还要求打开它时携带参数 newline='' 。后面的参数保持默认即可。

第二种方式是使用 DictReader 类,该类实现的效果与 reader() 方法一致,也是接收可迭代对象,返回生成器,差异是将返回的结果放到了一个字典的值内,字典的键就是单元格的标题。并且这样输出的函数是,不需要单独处理 csv 的列头行了。

import csv  # 模块导入with open('aa.csv', 'r', newline='', encoding='utf-8') as f:    reader = csv.DictReader(f)    for r in reader:        print(r)

输出内容:

OrderedDict([('sid', '10010'), ('name', '橡皮擦'), ('age', '18')])OrderedDict([('sid', '10086'), ('name', '发量迷人的乔喻'), ('age', '19')])OrderedDict([('sid', '10000'), ('name', '各位博主'), ('age', '20')])

写入文件

csv 文件写入用到的模块方法是 csv.writer(),该方法的原型如下:

csv.writer(csvfile, dialect='excel', **fmtparams)

最基本的写入:

import csvwith open('abc.csv', 'w', newline='') as csvfile:    w = csv.writer(csvfile)    # 写入列头    w.writerow(["sid", "name", "age"])    w.writerow(["10010", "橡皮擦", "18"])    w.writerow(["10086", "发量迷人的乔喻", "18"])

这时如果你在打开文件时,缺少了 newline='',那写入 csv 文件内容之后,会出现多余的换行。
除此之外,我们写入 csv 文件的时候,可以启用 dialect(方言)参数。例如使用 | 作为列的分隔符。
此时的文件写入代码写成下述内容:

class my_dialect(csv.Dialect):    lineterminator = '\r\n'    delimiter = ';'    quotechar = '"'    quoting = csv.QUOTE_MINIMALwith open('abc.csv', 'w', newline='') as csvfile:    w = csv.writer(csvfile, dialect=my_dialect)    # 写入列头    w.writerow(["sid", "name", "age"])    w.writerow(["10010", "橡皮擦", "18"])    w.writerow(["10086", "发量迷人的乔喻", "18"])

上述代码定义了一个新的类 my_dialect,并使其继承 csv.Dialect 类,重写了其中的部分字段。

delimiter:分隔字符,默认为 ,

lineterminator:writer 方法写入数据时,每行的结尾字符,默认为 \r\n

quotechar:单字符,用于包裹具有特殊字符的字段,例如 定界符,引号字符,换行符,默认是 "

quoting:控制 writer 何时生成引号,以及 reader 何时识别引号,默认是 QUOTE_MINIMAL,其余几个值分别是

QUOTE_ALL(全部加引号),

QUOTE_MINIMAL(特定情况加),

QUOTE_NONNUMERIC(所有非数字加),

QUOTE_NONE(都不加);

Writer 对象的方法说明:

csvwriter.writerow(row):写入单行;

csvwriter.writerows(rows):写入多行

import csv  # 模块导入csv_headers = ['name', 'age']rows = [('橡皮擦', 18),        ('发量迷人的乔喻', 19),        ('各位博主', 20)]with open('./aa.csv', 'w', encoding='utf-8',newline='') as f:    csv_file = csv.writer(f)    csv_file.writerow(csv_headers)  # 写入头    csv_file.writerows(rows)

DictReader 类使用方法差不多,还存在一个 DictWriter 类,该类将以字段格式写入 csv 文件字段。

import csvwith open('abc.csv', 'w', newline='') as csvfile:    w = csv.DictWriter(csvfile, fieldnames=['sid', 'name', 'age'])    w.writeheader()  # 写入列头    w.writerow({'sid': '10010', 'name': '橡皮擦', 'age': 18})    w.writerow({'sid': '10010', 'name': '橡皮擦', 'age': 18})    w.writerow({'sid': '10010', 'name': '橡皮擦', 'age': 18})

上述代码尤其注意 fieldnames 参数是必填参数,表示的是列头,并且在写入正式数据前,需使用 w.writeheader() 写入列头。

csv 文件其它说明

关于 csv 方言,可以使用 csv.register_dialect 方法将 namedialect 关联起来,核心含义相当于给 dialect 起了一个别名。删除也比较简单,使用 csv.unregister_dialect(name) 即可。csv.list_dialects() 返回已经注册的方言名称,你可以在电脑上做一下测试,查看 Python 环境中提供的几种方言。

import csvcsv.register_dialect('ca', delimiter='|', quoting=csv.QUOTE_MINIMAL)with open('abc.csv', 'w', newline='') as csvfile:    w = csv.DictWriter(csvfile, fieldnames=['sid', 'name', 'age'], dialect='ca')    w.writeheader()  # 写入列头    w.writerow({'sid': '10010', 'name': '橡皮擦', 'age': 18})    w.writerow({'sid': '10010', 'name': '橡皮擦', 'age': 18})    w.writerow({'sid': '10010', 'name': '橡皮擦', 'age': 18})

csv 模块还提供了 csv.Sniffer 类,用于推断 csv 文件的格式,其存在两个方法:

sniff(sample, delimiters=None):分析并返回一个 dialect 子类,可以分析出格式参数;

has_header(sample):分析 csv 文件是否存在标题。

到此,关于"python如何内置csv模块"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

文件 橡皮 橡皮擦 模块 方法 参数 对象 迷人 字段 字符 内容 引号 数据 方言 格式 学习 代码 逗号 分析 分隔符 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 宕昌县有什么数据库 电信市分公司软件开发待遇 不可免费检索文献的数据库是 英特弗洛网络技术信用卡 我的世界开局就送无限32k服务器号 香儿网络技术黑客 香港时间服务器地址 以色列网络安全系数 内存数据库 持久化数据库 您的电脑不能再安全服务器 科技互联网深度分析 开展网络安全宣传活动的简报 天津的服务器地址 西安手机应用软件开发要多少钱 python优雅的退出服务器 老外软件开发 一个顶几十个 江北网络技术公司 七上政治网络安全教育教案 杭州计算机应用软件开发价钱 总结计算机网络技术笔试题 宁波市网络安全网 离散数学网络安全 国产化软件开发是什么意思 软件开发的营业执照 中控消费系统 数据库 linux 图像软件开发 一般打印机如何加到服务器上 魔兽世界怀旧服服务器机房位置 长沙正规软件开发价格 软件开发工程师证查询
0