1. 操作csv表格
使用的庫 csv
1. csv文件里讀取數據
代碼
1. 以列表形式打開
import csv
f = open('csv_test.csv', 'r') # 打開csv文件
csv_reader = csv.reader(f) # 將打開的文件裝換成csv可讀的對象
for each in csv_reader: # 打印,結果是個列表
print(each)
f.close()
結果
['name', 'age', 'score']
['張三', '18', '100']
['王二', '17', '98']
['麻子', '20', '99']
2.以字典形式打開
import csv
f = open('csv_test.csv', 'r') # 打開csv文件
csv_reader = csv.DictReader(f) # 將打開的文件裝換成csv可讀的對象,注意是DictReader()
for each in csv_reader:
print(each['name'])
f.close()
結果
張三
王二
麻子
說明
不能直接print(csv_reader) 結果為
<_csv.reader object at 0x7f67f2328198>
(第一種)
<csv.DictReader object at 0x7f29ef0a4710>
(第二種)
以字典形式打開會將表頭作為字典的key,而其余的每一行會成為字典的value
2. 將數據寫進csv文件
代碼
1.以列表的方式
import csv
contents = [['id', 'name', 'hobby'],
['001', '老王', 'Java'],
['002','老胡','Python'],
['003','老李','PHP']]
with open('csv_test2.csv', 'a', newline='') as f:
csv_writer = csv.writer(f)
for each in contents:
csv_writer.writerow(each)
結果
id | name | hobby |
---|---|---|
1 | 老王 | Java |
2 | 老胡 | Python |
3 | 老李 | PHP |
2.以字典的方式
import csv
header = ['id', 'name', 'hobby']
contents = [{'id':'1','name':'老王','hobby':'Java'},
{'id':'2','name':'老胡','hobby':'Python'},
{'id':'3','name':'老李','hobby':'PHP'}]
with open('csv_test4.csv', 'a', newline='') as f:
csv_writer = csv.DictWriter(f, header)
csv_writer.writeheader()
for each in contents:
csv_writer.writerow(each)
結果
id | name | hobby |
---|---|---|
1 | 老王 | Java |
2 | 老胡 | Python |
3 | 老李 | PHP |
說明
打開新的文件時需要newline='',否則會產生空行
上面的代碼也可以用csv_writer.writerows(contents)
實現(兩種均可)
以字典形式寫入時必須先寫頭具體操作見代碼
2. 操作excel表格
使用的庫 xlrd(讀), xlwt(寫)
1. 從excel文件里讀取數據
import xlrd
book = xlrd.open_workbook('excel_test1.xls') # 打開excel文件
sheet_1 = book.sheets()[0] # 打開第一張表
num_rows = sheet_1.nrows # 獲取當前表的所有的行數
num_cols = sheet_1.ncols # 獲取當前表的所有的列數
# 遍歷行, 會將每一行以列表的形式輸出
for row in range(num_rows):
row_values = sheet_1.row_values(row) # 使用的函數是row_values()
print(row_values)
# 遍歷列, 會將每一列以列表的形式輸出
for col in range(num_cols):
col_values = sheet_1.col_values(col) # 使用的函數是col_values()
print(col_values)
# 遍歷單元格, 從上到下從左到右輸出每一個單元格的內容
for row in range(num_rows):
for col in range(num_cols):
cell_value = sheet_1.cell_value(row, col) # 使用的函數是cell_value()
print(cell_value)
說明
主要函數,屬性
book = xlrd.open_workbook('excel_test1.xls') # 打開excel文件
sheet_1 = book.sheets()[0] # 打開第一張表num_rows = sheet_1.nrows # 獲取當前表的所有的行數
num_cols = sheet_1.ncols # 獲取當前表的所有的列數row_values = sheet_1.row_values(row) # 使用的函數是row_values()
col_values = sheet_1.col_values(col) # 使用的函數是col_values()
cell_value = sheet_1.cell_value(row, col) # 使用的函數是cell_value()
注意xlrd不可以改動excel文件
2. 將數據寫進excel文件中
import xlwt
# 創建Workbook對象
book = xlwt.Workbook(encoding='utf-8', style_compression=0)
'''
Workbook類初始化時有encoding和style_compression參數
encoding='utf-8',為輸入中文
style_compression,表示是否壓縮
'''
# 添加表格
sheet = book.add_sheet('sheet1', cell_overwrite_ok=True)
'''
sheet1為表格的名稱
cell_overwrite_ok,表示是否可以覆蓋單元格
'''
# 向表sheet1中添加數據
sheet.write(0, 0, 'id') # 前兩個參數為單元格坐標,這里表示第一行第一列(從0開始),后面為內容
sheet.write(0,1, 'name')
sheet.write(1,0, '1')
sheet.write(1,1, '老胡')
# 保存到指定的Excel文件中
book.save('excel_test2.xls')
說明
主要函數
book = xlwt.Workbook(encoding='utf-8', style_compression=0) # 創建Workbook對象
sheet = book.add_sheet('sheet1', cell_overwrite_ok=True) # 添加表格
sheet.write(0, 0, 'id') # 前兩個參數為單元格坐標,這里表示第一行第一列(從0開始),后面為內容
book.save('excel_test2.xls') # 保存文件