社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

python读写csv文件

生信修炼手册 • 5 年前 • 635 次点击  

欢迎关注”生信修炼手册”!
文件读写的经典操作方式如下,通过内置的open函读取到每行内容,按照指定的分隔符进行分隔,然后对每一列的内容进行处理。这样的方式在处理制表符分隔的文件时,没什么问题,但是在处理csv文件时,会非常的头痛。
CSV文件格式简单理解,是逗号分隔的纯文本,但是实际上非常灵活。在excel导出的csv文件中,会遇到某个字段内部出现了逗号的情况,这样的字符在两端添加双引号来进行区分,示意如下
name,"jack,rose",26
传统的读取方式,单纯用逗号分隔,会得到4个字段
>>> with open('file.csv') as f:...     for line in f:...         print(line.rstrip().split(','))...['name', '"jack', 'rose"', '26']

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

>>> import csv>>> with open('file.csv', newline='') as f:...     reader = csv.reader(f)...     for row in reader:...         print(row)...['name', 'jack,rose', '26']

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

Name,Student,Agename,"jack,rose",26

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

>>> 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也有列表和字典两种写法

# 写入列表>>> 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·

—如果喜欢,快分享给你的朋友们吧—



原创不易,欢迎收藏,点赞,转发!生信知识浩瀚如海,在生信学习的道路上,让我们一起并肩作战!
本公众号深耕耘生信领域多年,具有丰富的数据分析经验,致力于提供真正有价值的数据分析服务,擅长个性化分析,欢迎有需要的老师和同学前来咨询。
  更多精彩



  写在最后


转发本文至朋友圈,后台私信截图即可加入生信交流群,和小伙伴一起学习交流。


扫描下方二维码,关注我们,解锁更多精彩内容!


一个只分享干货的

生信公众号






Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/62823
 
635 次点击