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

标签:Python,CSV,文件解析,文件生成
0
投稿

猜你喜欢

  • Mysql入门系列:MYSQL日志文件维护

    2008-11-24 13:10:00
  • Pytorch 如何实现LSTM时间序列预测

    2023-06-26 01:04:24
  • Python压缩模块zipfile实现原理及用法解析

    2023-07-13 03:01:46
  • php防止sql注入代码实例

    2023-08-15 21:17:21
  • Python wxPython库Core组件BoxSizer用法示例

    2023-01-17 23:08:32
  • 浅谈SQL Server中统计对于查询的影响分析

    2012-06-06 20:08:23
  • php生成图片验证码的实例讲解

    2023-09-11 21:36:29
  • 细化解析:MySQL 服务器究竟有多稳定?

    2009-01-14 11:55:00
  • python去除文件中重复的行实例

    2022-07-30 17:33:38
  • 关于python中密码加盐的学习体会小结

    2022-05-13 09:47:04
  • PyCharm使用教程之搭建Python开发环境

    2021-09-01 15:21:00
  • Python 使用list和tuple+条件判断详解

    2022-05-13 16:36:39
  • 认识那些被忽略的SQL Server注入技巧

    2009-01-20 13:15:00
  • Python中用format函数格式化字符串的用法

    2022-04-17 03:02:06
  • 发布你的Python模块详解

    2021-06-10 02:03:53
  • Golang如何构造最佳随机密码详解

    2024-05-05 09:29:37
  • 对Python+opencv将图片生成视频的实例详解

    2022-01-03 08:42:16
  • Python filter过滤器原理及实例应用

    2021-03-20 13:11:13
  • 什么是好的设计

    2010-02-25 12:22:00
  • Python操作Excel神器openpyxl使用教程(超详细!)

    2021-02-28 21:58:35
  • asp之家 网络编程 m.aspxhome.com