超详解Python读写csv文件及空行问题解决
Posted ZSYL
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了超详解Python读写csv文件及空行问题解决相关的知识,希望对你有一定的参考价值。
Python操作csv文件
1. What’s CSV
CSV:逗号分隔值(Comma-Separated Values,CSV,也称为字符分隔值,分隔字符也可以不是逗号)。
- 保存形式
其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。
- 分隔符号
CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。
- 打开方式
通常,所有记录都有完全相同的字段序列。通常都是纯文本文件。建议使用word或记事本来开启,再则先另存新档后用excel开启,也是方法之一。
2. Write CSV
2.1 list
使用列表生成csv
open()
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# 导入CSV安装包
import csv
# 1. 创建文件对象
f = open('文件名.csv','w',encoding='utf-8')
# 2. 基于文件对象构建 csv写入对象
csv_writer = csv.writer(f)
# 3. 构建列表头
csv_writer.writerow(["姓名","年龄","性别"])
# 4. 写入csv文件内容
csv_writer.writerow(["l",'18','男'])
csv_writer.writerow(["c",'20','男'])
csv_writer.writerow(["w",'22','女'])
# 5. 关闭文件
f.close()
一维列表数据,直接for循环写入
注意:最后一定 file.close()
:关闭文件流,确保写入数据成功。
with()
import csv
keys=['a','b','c','d']
data=[[1,2,3,4],[5,6,7,8],[9,10,11,12]]
with open('data.csv','w') as file:
writer=csv.writer(file) # 建立csv写入对象
writer.writerow(keys) # 调用writerow函数写入一行数据(表头)
for row in data:
writer.writerow(row)
若写入的数据是二维列表,可以使用 writerows() 方法一次写入多行。
with open('data.csv','w') as file:
writer=csv.writer(file)
writer.writerow(keys)
writer.writerows(data)
2.2 dict
字典生成csv
import csv
data=[{'a':1,'b':2,'c':3},{'a':4,'b':5,'c':6},{'a':7,'b':8,'c':9}]
fieldnames=['a', 'b', 'c'] # 列名列表,即字典的key值列表
with open('data.csv','w', newline='') as file:
writer = csv.DictWriter(file, fieldnames=fieldnames) # 建立一个字典写入对象,并指定列名fieldnames
writer.writeheader() # writeheader()生成表头即列名 filednames
writer.writerows(data) # 一次写入多行,也可使用writerow()写入单行(for循环)
3. Read CSV
3.1 list
将csv读取为列表
with open('data.csv','r') as file:
reader = csv.reader(file)
for row in reader:
print(row)
['a', 'b', 'c']
['1', '2', '3']
['4', '5', '6']
['7', '8', '9']
可以使用 list.append(),整合每行数据
3.2 dict
data=[]
with open('data.csv','r') as file:
reader = csv.DictReader(file)
fieldnames = reader.fieldnames # 获取表头
print(fieldnames)
for row in reader: # 获取每一行数据
data.append(dict(row))
print(data)
['a', 'b', 'c']
[{'a': '1', 'b': '2', 'c': '3'}, {'a': '4', 'b': '5', 'c': '6'}, {'a': '7', 'b': '8', 'c': '9'}]
4. CSV空行问题解决
4.1 Python2 解决
将写入方式w,修改成wb
f = open('文件名.csv', 'wb', encoding='utf-8')
4.2 Python3 解决
Python2的解决方式也支持,同时也可以添加参数newline=' '
即可,如下所示:
f = open('文件名.csv', 'wb', encoding='utf-8', newline='')
参考:
加油!
感谢!
努力!
以上是关于超详解Python读写csv文件及空行问题解决的主要内容,如果未能解决你的问题,请参考以下文章