简介
逗号分隔值(Comma-Separated Values,CSV,其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。通常都是纯文本文件。
泛指有以下特征的文件:
- 纯文本,使用某个字符集
- 由记录组成(典型的是每行一个记录)
- 每条记录被分隔符分割成字段
- 每条记录都有相同的字段序列
对列表写入读取示例
- write():返回一个writer对象,负责将用户的数据转换为给定的类文件对象上的分隔字符串
- writerow():写入一行数据
- writerows():写入多行数据
- reader():返回迭代器
- next():返回迭代器的下一项,这里是为了去掉表头,直接指向数据
import csv
header = [ 'username','age','country']
data = [
('张三','18','CN'),
('hal','17','CN'),
('root','16','CN')
]
# 写入文件
# writerow()写入一行
# writerows()写入多行
with open('user.csv','w',newline='',encoding='utf-8') as fp:
writer = csv.writer(fp)
# 写入一行表头
writer.writerow(header)
# 写入多行数据
writer.writerows(data)
# 从文件中读取
with open('user.csv','r',encoding='utf-8') as fp:
# reader()返回的是迭代器
reader = csv.reader(fp)
# 不要表头,可以next()函数指向下一行
next(reader)
for row in reader:
print(row)
运行结果:
对字典写入读取示例
- 对字典写入要用DictWriter()创建对象
- 写入的时候不要忘记writeheader(),写入表头
import csv
persons = [
{
'username':"张三",
'age':18,
'country':'china'
},
{
'username':"root",
'age':16,
'country':'china'
},
{
'username':"hal",
'age':15,
'country':'china'
}
]
header = ['username','age','country']
# 写入文件
with open('userdict.csv','w',newline='',encoding='utf-8') as fp:
writer = csv.DictWriter(fp,header)
# 写表头
writer.writeheader()
# 写入单行数据
writer.writerow({'username':'单行','age':'1','country':'CN'})
# 写入多行数据
writer.writerows(persons)
# 从文件中读取
with open('userdict.csv','r',encoding='utf-8') as fp:
reader= csv.DictReader(fp)
for x in reader:
print(x['username'],x['age'],x['country'])
执行结果:
参考链接: