Python CSV 文件解析和生成方法示例
作者:常伟佳 发布时间:2022-12-25 10:52:58
思路
简单的生成和读取 CSV
CSV 文件格式
使用 csv 库
Python with CSV
先有个很朴素的生成和解析的方法。
生成:
data = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9],
]
for cow in data:
print(','.join(map(str, cow)))
生成结果:
1,2,3
4,5,6
7,8,9
解析
s = """1,2,3
4,5,6
7,8,9
"""
cows = s.splitlines()
data = []
for cow in cows:
items = cow.split(',')
data.append(items)
# data
# [['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']]
但是显示的数据可能不这么理想,比如其中的某一项有 ,
的时候就会有问题了。
CSV 格式
CSV 中有几个概念需要先了解下。CSV 虽然是 Comma-separated values 但并不一定用逗号来分隔,也可以用其他的来分隔。同时 CSV 也没有一个明确的规范。
从 Python 的 csv 的文档中看到的一些关键术语:
delimiter
,最基本的分隔符
quotechar
,如果某个 item 中包含了分隔符,应该用 quotechar 把它包裹起来
doublequote
,如果某个 item 中出现了 quotechar 那么可以把整个内容用 quotechar 包裹,并把 quotechar double 一下用来做区分
escapechar
,如果不用 doublequote 的方法还可以用 escapechar 来辅助
lineterminator
,每一行的结束符,默认的是 \r\n
quoting
,可以选择任何时候都使用 quotechar 来包裹内容,或者是需要用到的时候再用,或者不用
skipinitialspace
,是否忽略分隔符后面跟着的空格
strict
,这个是 Python 自己的,是否抛要异常
(上面的可能没有覆盖所有的细节,但大概就是这样的情况)
使用 Python 的 csv 库
13.1. csv — CSV File Reading and Writing — Python 2.7.12 documentation
很简单的例子就是
import csv
with open('some.csv', 'rb') as f:
reader = csv.reader(f)
for row in reader:
print row
import csv
with open('some.csv', 'wb') as f:
writer = csv.writer(f)
writer.writerows(someiterable)
另外这里面有个 dialect 的概念,就是用一个 dialect 来定义上面提到的那些解析规则。
可以自己注册(csv.register_dialect
)、列出所有的(csv.list_dialects
)、获取某个(csv.get_dialect
)。
默认是用逗号分隔的 excel
的 dialect,所以如果没有特殊情况应该直接使用默认值就够了。
其他
这次先只把基本概念了解下,后面可能还有文件编码之类的坑,到时遇到了再回来更新。
参考
PEP 305 -- CSV File API | Python.org
13.1. csv — CSV File Reading and Writing — Python 2.7.12 documentation
来源:https://segmentfault.com/a/1190000006029896?utm_source=sf-similar-article
猜你喜欢
- 最近在折腾验证码识别。最终的脚本的识别率在92%左右,9000张验证码大概能识别出八千三四百张左右。好吧,其实是验证码太简单。下面就是要识别
- 现在需要将course分组,然后选择出每一组里面的最大值和最小值,并保留下来实现下面数据结果:直接使用groupby函数,不能直接达到此效果
- javascript模仿alert提示效果,如果你听厌倦了系统自带的那个,可以使用这个alert提示效果,听不错的。相关文章推荐《类似于新浪
- php文件 <?php class xpathExtension{ public static function getNodes($
- 有序字典-OrderedDict简介示例有序字典和通常字典类似,只是它可以记录元素插入其中的顺序,而一般字典是会以任意的顺序迭代的。参见下面
- 有。试试下面这个程序:saveip.asp<%Server.Scripttimeout = 1000On 
- 1. h5py简单介绍h5py文件是存放两类对象的容器,数据集(dataset)和组(group),dataset类似数组类的数据集合,和n
- 环境:python3.5,pycharm2017.2.3目录结构a.pyt=5b.pyfrom a import tprint(t)平台显示
- 为了组织search线的设计师交流会,特地去准备了一些资料。《SERP 2010》是其中一个,但是由于时间关系没有进行讨论。原著是英文报告,
- 文件的io操作的缓冲行为分为全缓冲:同系统及磁盘块大小有关,n个字节后执行一次写入操作行缓冲:遇到换行符执行一次写操作无缓冲:立刻执行写操作
- 问题:如何在报表中每隔N行显示一条粗线如何为报表增加一个行号列?回答:1、在设计模式里打开该报表,在报表主体里面加一个TextBox,把Na
- 如下所示:dicFile = open('train_1.txt', 'r')
- 本文实例为大家分享了python实现简单的飞机大战的具体代码,供大家参考,具体内容如下制作初衷这几天闲来没事干,就想起来好长时间没做过游戏了
- 公网与私有网络的判断其实十分简单,只要记住私有网络的三个网段。不过,对于记性不好的人或者学识不是很高的机器来说,有一种判断方法还是有必要的。
- 一:操作session1:session配置Session 的配置文件存储在config/session.php中,配置参数有:(1):配置
- 1. 直接打印错误try:# your codeexcept KeyboardInterrupt:print("quit"
- 支持CSS属性Safari和WebKit实施大子的CSS 2.1规格所界定的万维网联盟( W3C ) ,以及部分的CSS 3规格。 。这个C
- 1、GIL简介GIL的全称为Global Interpreter Lock,全局解释器锁。1.1 GIL设计理念与限制python的代码执行
- WSGI协议首先弄清下面几个概念:WSGI:全称是Web Server Gateway Interface,WSGI不是服务器,python
- 最近有点审美疲劳,以往看起来觉得漂亮的界面现在觉得很一般,以前觉得看来还行的界面现在觉得很丑了。想来是时候休息一下了。唯美觉得上次做的OA登