38 Python csv
来源:互联网 发布:今日方知我是我的诗句 编辑:程序博客网 时间:2024/05/30 23:04
定义
逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),
CSV格式是分隔的数据格式
存储方式:以纯文本形式存储表格数据(数字和文本)。
分割符
CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符为其它字符或字符串,最常见的是逗号或制表符。
规范
数据不跨行
以逗号(,)作为分隔符
如果字段中包含特殊字符(逗号,换行符),必须以双引号括住;
如果字段是空字符串,最好用双引号括住;
如果字段中包含特殊字符双引号,需要双写双引号来括住该字段
如content中包含”,则要用”“content”“
内码格式不限,可为 ASCII、Unicode 或者其他
不支持特殊字符,如果有特殊字符可能会导致分隔错误
写入文件时,最好提前进行编码检查,不然可能会导致错行
如果该字段内容为空,最好以双引号括住,不然可能会导致分隔错误
csv模块
#!/usr/bin/python# -*- coding=utf-8 -*-import csvfrom collections import namedtuplefor row in csv.reader(['one,two,three']): print row # one, two, three# 1.csv格式如下# name age# a 1# b 2# 分隔符为',', 用双引号作为引用符(quotechar)# 按行读取, 返回值为listwith open("1.csv") as f: fcsv = csv.reader(f, delimiter = ",") heading = next(fcsv) # 创建命名元组时要注意, 如header的标题不合法,出现不能作为变量名的字符,如-=等 row = namedtuple('row', heading) for i in fcsv: print i, type(i) # ['a', '1'] <type 'list'> i = row(*i) print i, type(i) # row(name='a', age='1') <class '__main__.row'># 按行读取, 返回值为dict, 第一行为字典的keywith open("1.csv") as f: fcsv = csv.DictReader(f) for i in fcsv: print i, type(i) # {'age': '2', 'name': 'b'} <type 'dict'>headers = ("name", "age", "home")rows = [(1,2,3), (4,5,6), (7,8,9)]# 按行写入, 如果不以wb形式写, 会多一个换行with open("write.csv", "wb") as f: fcsv = csv.writer(f) fcsv.writerow(headers) fcsv.writerows(rows)# 将字典中的内容对号入座with open("write1.csv", "wb") as f: fcsv = csv.DictWriter(f, headers) fcsv.writeheader() for i in range(len(rows)): rows[i] = dict(zip(headers, rows[i])) fcsv.writerows(rows)
csv的文件操作要使用wb, rb,这样会省去很多的问题。如在windows中不用wb的形式写入,会多空行,因为windows的换行符为\r\n
注意事项
- 当字段内容包含特殊符号(” , \n)时,要将该字段用”“括住,包含双引号的话用”“”“括住
- 如果该字段包含特殊字符,csv文件会出现编码错误,也会导致分隔失败
官方文档https://docs.python.org/2/library/csv.html
阅读全文
0 0
- 38 Python csv
- python csv
- python csv
- python-csv
- Python csv
- python csv
- python 处理csv数据
- python read csv
- Python-读取csv文件
- Python读写csv文件
- Python 处理CSV文件
- Python csv 模块
- python操作csv
- python读取CSV文件
- Python and CSV
- python处理文件(.csv)
- python csv文件写入
- python 写csv
- 【NOIP2017提高组模拟6.27】C
- 修改Android 的EditText的密码视觉回显
- java 线程池工作策略
- Java中利用Collections、HashMap、TreeSet混合使用Demo
- json转bean,并存进数据库
- 38 Python csv
- 第7课 面向对象的基本概念
- 如何计算文本文档词向量之间的相似度----一些概念与方法
- JZOJ 5172. 【NOIP2017提高组模拟6.27】lllegal Motor
- Microsoft Word 2007如何导出PDF
- Android开发通过Glide显示url图片
- shell编程四剑客find及grep
- 导出时获取到状态
- Struts文件上传