一、字典格式数据写入
(1) 使用writerow
写入数据
import csv
datas = [
{'name':'小明','age':18,'phone':13100},
{'name':'小华','age':22,'phone':13101},
{'name':'小五','age':23,'phone':13102},
{'name':'小李','age':26,'phone':13103},
]
with open('demo2.csv', mode='w', encoding='utf-8', newline='') as fw:
writer = csv.DictWriter(fw,fieldnames=['name','age','phone'])
writer.writeheader() # 将表头写上
for data in datas:
writer.writerow(data)
(2) 使用writerows
写入数据
import csv
datas = [
{'name':'小明','age':18,'phone':13100},
{'name':'小华','age':22,'phone':13101},
{'name':'小五','age':23,'phone':13102},
{'name':'小李','age':26,'phone':13103},
]
with open('demo2.csv', mode='w', encoding='utf-8', newline='') as fw:
writer = csv.DictWriter(fw,fieldnames=['name','age','phone'])
writer.writeheader()
writer.writerows(datas)
输出结果(用notepad++打开显示内容)
注:这里若未写writer.writeheader()
这行代码,写入的结果将无表头字段。
二、读取csv文件(字典格式数据)
(1) 读取每一行数据
with open('demo.csv',mode='r',encoding='utf-8') as fr:
reader = csv.DictReader(fr,fieldnames=['name','age','phone'])
for line in reader:
print(line)
输出结果
OrderedDict([('name', '小明'), ('age', '18'), ('phone', '13100')])
OrderedDict([('name', '小华'), ('age', '22'), ('phone', '13101')])
OrderedDict([('name', '小五'), ('age', '23'), ('phone', '13102')])
OrderedDict([('name', '小李'), ('age', '16'), ('phone', '13103')])
(2) 读取某列数据
with open('demo.csv',mode='r',encoding='utf-8') as fr:
reader = csv.DictReader(fr,fieldnames=['name','age','phone'])
for line in reader:
print(line['name'])
输出结果
小明
小华
小五
小李
还可以这样写法:
with open('demo.csv',mode='r',encoding='utf-8') as fr:
reader = csv.DictReader(fr,fieldnames=['name','age','phone'])
for line in reader:
print(line.get('name'))
输出结果
小明
小华
小五
小李
(2) 读取所有的值(除去表头)
with open('demo.csv',mode='r',encoding='utf-8') as fr:
reader = csv.DictReader(fr,fieldnames=['name','age','phone'])
for line in reader:
for value in line.values():
print(value,end=' ')
输出结果
小明 18 13100 小华 22 13101 小五 23 13102 小李 16 13103