使用列表生成csv
>>> 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)
另外可以发现csv文件每行之间会出现一个空行
vscode显示
-------------------
a,b,c,d
1,2,3,4
5,6,7,8
9,10,11,12
为避免此情况,应当在open文件的时候添加参数newline=’’
>>> with open('data.csv','w',newline='') as file:
writer=csv.writer(file)
writer.writerow(keys)
writer.writerows(data)
字典生成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()生成表头即列名
writer.writerows(data) # 一次写入多行,也可使用writerow()写入单行
将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']
将csv读取为字典
>>> 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'}]