1. 程式人生 > >python的csv檔案讀寫及避免出現空行的方法

python的csv檔案讀寫及避免出現空行的方法

使用列表生成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'}]