赞
踩
Python中内置csv库实现对csv文件的读写
import csv
写入csv要用到“写入器” ——> writer
- # 写入操作(一次写一行)(列表写入)
- with open('data.csv', 'w', encoding='utf-8-sig') as csvfile: # utf-8-sig让生成的csv文件带有DOM
- writer = csv.writer(csvfile) # 生成一个“写手”
-
- writer.writerow(['id', 'name', 'age']) # 一次写一行
- writer.writerow(['01', 'xiaodai', 28])
- writer.writerow(['02', 'xiaoshizi', 22])
- # 写入操作(一次写多行)(列表写入)
- with open('data.csv', 'a') as csvfile:
- writer = csv.writer(csvfile, delimiter='+') # delimiter指定分隔符,默认是逗号,这里指定为加号
- writer.writerows([
- ['id', 'name', 'age'],
- ['03', 'xiaopidan', 1],
- ['04', 'xiaolajiao', 1],
- ])
- # 写入操作(一次写一行)(字典写入)
- with open('data.csv', 'a', encoding='utf-8-sig') as csvfile: # utf-8可以写入中文
- fieldnames = ['id', 'name', 'age'] # 可以将列名单独定义
- writer = csv.DictWriter(csvfile, fieldnames=fieldnames) # 创建“写手”的时候就可以传入表头
- writer.writerow({
- 'id': '05',
- 'name': '小呆',
- 'age': 28,
- })
- # 写入操作(一次写多行)(取消空行)
- with open('data.csv', 'a', encoding='utf-8', newline='') as csvfile:
- """
- 这通常是由于在写入CSV数据时,每行数据之间都会自动添加一个换行符,从而导致出现空行
- 要取消数据之间的空行,可以在写入CSV数据时指定newline=''
- """
- fieldnames = ['id', 'name', 'age']
- writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
- data = [
- {'id': '06', 'name': '小柿子', 'age': 22},
- {'id': '07', 'name': '小皮蛋', 'age': 1},
- {'id': '08', 'name': '小辣椒', 'age': 1},
- ]
- writer.writerows(data)
读取csv要用到“读取器” ——> reader
- with open('data.csv', 'r', encoding='utf-8') as csvfile:
- reader = csv.reader(csvfile) # 生成读取器,是一个可迭代对象
- for row in reader: # for循环遍历读取
- print(row)
原因:这通常是由于在写入CSV数据时,每行数据之间都会自动添加一个换行符,从而导致出现空行
解决方法:要取消数据之间的空行,可以在写入CSV数据时指定newline=''
open('data.csv', 'a', newline='')
原因:没有指定UTF-8编码
解决方法:encoding='utf-8'
open('data.csv', 'a', encoding='utf-8')
原因:Excel默认CSV带有DOM,而创建时没有指定带有DOM
解决方法:在创建一个带DOM的CSV ,传入encoding='utf-8-sig'即可
open('data.csv', 'a', encoding='utf-8-sig')
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。