少女祈祷中...

python操作csv文件


本篇概述:csv文档操作及部分函数示例


1、简介

  1. CSV 模块是python内置的标准库
1
import csv # 引入方式
  1. CSV格式的文件是电子表格和数据库最常见的输入输出文件格式,对了多种来源的CSV文件,编写一个统一的CSV模块来统一处理是极为有效率的。

2、函数介绍

1.csv.reader()

  • 读取

  • csvfile : 必须是可迭代对象,或者是文件

  • dialect:编码风格,默认是 excel 风格;需要指定其他风格可查看csv.list_dialects()

    1
    2
    print(csv.list_dialects())
    # ['excel', 'excel-tab', 'unix']
  • fmtparams:格式化参数,用于覆盖 dialect 指定的风格

1
2
3
4
5
6
7
8
import csv

with open('t.csv','r') as f:
ls = csv.reader(f,dialect='excel') # 默认是excel
for l in ls:print(l)
# ['标题1', '标题2', '标题3', '标题4']
# ['1', '2', '3', '4']
# ['1', '1']

2.csv.writer()

  • 写入
  • 同csv.reader()
1
2
3
4
5
6
7
8
import csv

# w是写入,存在则覆盖,慎用
# 这里为了举例使用
with open('t.csv','w') as f:
w = csv.writer(f)
w.writerow([0,1])
w.writerows([['John',18],['Joe',19]])
  • writerow 单行写入
  • writerows 多行写入

但是以上代码执行后存在一个问题:每次写入数据都会换行再写入

解决:

1
2
3
4
5
6
7
import csv

# w是写入,存在则覆盖,慎用
with open('t.csv','w',newline='') as f:
w = csv.writer(f)
w.writerow([0,1])
w.writerows([['John',18],['Joe',19]])

结果:

分析:

  • newline 参数是控制文本模式下( 即w、w+、a、a+等) 一行文本结束的字符,可以是None,\n,\t等

3.csv.list_dialects()

  • 查看所有支持的编码风格,包括用户自定义的
1
2
3
import csv
print(csv.list_dialects())
# ['excel', 'excel-tab', 'unix']

4.csv.register_dialect(name, [dialect, ]**fmtparams)

  • 创建自定义的 dialect
  • name:自定义的 dialect 名字
  • 其余的是dialect格式参数,包括:delimiter(分隔符,默认的就是逗号)、quotechar、quoting等
1
2
3
4
5
6
7
8
# 创建一个test1的dialect,分隔符用"|"
csv.register_dialect('test1',delimiter='|')


# 引用
with open('t.csv','r') as f:
ls = csv.reader(f,'test1')
pass

5.csv.unregister_dialect()

  • name:dialect的名字
1
2
3
4
5
6
7
8
9
10
import csv

print(csv.list_dialects())
['excel', 'excel-tab', 'unix']
csv.register_dialect('test1',delimiter='|')
print(csv.list_dialects())
['excel', 'excel-tab', 'unix', 'test1']
csv.unregister_dialect('test1')
print(csv.list_dialects())
['excel', 'excel-tab', 'unix']

6.csv.DictWriter()

  • 以字典形式写入
  • csvfile:必须是可迭代对象,或者是文件
  • fieldnames:字段名
1
2
3
4
5
6
7
8
9
import csv

with open('t.csv','w',newline='') as f:
fileheader = ['name','age']
w = csv.DictWriter(f,fileheader)
w.writeheader()
data = [['Ame',18],['Jack',22],['Bob',26]]
for d in data:
w.writerow({'name':d[0],'age':d[1]})

结果:

-------------本文结束感谢您的阅读-------------

本文标题:python操作csv文件

文章作者:Coder-Sakura

发布时间:2019年09月26日 - 10:58:41

最后更新:2019年09月26日 - 15:07:28

原始链接:https://coder-sakura.github.io/blog/2019/09/26/csv/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。