前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python读写csv文件

python读写csv文件

作者头像
生信修炼手册
发布2020-05-13 14:38:07
1.8K0
发布2020-05-13 14:38:07
举报
文章被收录于专栏:生信修炼手册生信修炼手册

欢迎关注”生信修炼手册”!

文件读写的经典操作方式如下,通过内置的open函读取到每行内容,按照指定的分隔符进行分隔,然后对每一列的内容进行处理。这样的方式在处理制表符分隔的文件时,没什么问题,但是在处理csv文件时,会非常的头痛。

CSV文件格式简单理解,是逗号分隔的纯文本,但是实际上非常灵活。在excel导出的csv文件中,会遇到某个字段内部出现了逗号的情况,这样的字符在两端添加双引号来进行区分,示意如下

代码语言:javascript
复制
name,"jack,rose",26

传统的读取方式,单纯用逗号分隔,会得到4个字段

代码语言:javascript
复制
>>> with open('file.csv') as f:
...     for line in f:
...         print(line.rstrip().split(','))
...
['name', '"jack', 'rose"', '26']

而实际上,应该是3个字段。为了正确的处理csv格式,python内置了csv模块,专门用于读写csv格式的文件。读取csv文件的代码如下

代码语言:javascript
复制
>>> import csv
>>> with open('file.csv', newline='') as f:
...     reader = csv.reader(f)
...     for row in reader:
...         print(row)
...
['name', 'jack,rose', '26']

可以看到,处理出来的格式和预期的一致,每一行的内容是一个列表。对于第一行为表头的csv文件

代码语言:javascript
复制
Name,Student,Age
name,"jack,rose",26

也可以通过DictReader方法来读取,代码如下

代码语言:javascript
复制
>>> with open('file.csv') as f:
...     reader = csv.DictReader(f)
...     for row in reader:
...         print(row)
...
{'Name': 'name', 'Student': 'jack,rose', 'Age': '26'}

每一行的内容是一个dict, key为对应的表头。生成csv也有列表和字典两种写法

代码语言:javascript
复制
# 写入列表
>>> import csv
>>> line = ['name', 'jack,rose', '26']
>>> with open('out.csv','w') as csvfile:
...     f = csv.writer(csvfile)
...     f.writerow(line)
...
21
# 写入字典
>>> head = ['Name', 'Student', 'Age']
>>> line = {'Name': 'name', 'Student': 'jack,rose', 'Age': '26'}
>>> with open('dict.csv','w') as csvfile:
...     f = csv.DictWriter(csvfile, fieldnames = head)
...     f.writeheader()
...     f.writerow(line)
...
21

对于csv文件,用csv模块来处理,可以保证结果的准确性,避免不必要的错误。

·end·

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信修炼手册 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档