1. 程式人生 > 實用技巧 >python對csv檔案讀寫的兩種方式 和 讀寫檔案編碼問題處理

python對csv檔案讀寫的兩種方式 和 讀寫檔案編碼問題處理

'''
如果檔案讀取資料出錯,可以考慮加一個encoding屬性,取值可以是:utf-8,gbk,gb18030
或者加一個屬性error,取值為ignore,例如
open(path, encoding='gb18030', errors='ignore')
'''
'''
1.csv資料為:
1,2,3
4,5,6
7,8,9

'''
import csv
def read_file1():
    with open('1.csv','r') as fp:
        # reader相當於一個迭代器
        reader = csv.reader(fp)
        # 使用next,那麼就相當於把指標fp向下移動一行
next(reader) for read in reader: print(read) def read_file2(): with open('1.csv','r') as fp: # 將csv的資料轉化為字典,這個時候reader裡面就不再包含第一行資料 reader = csv.DictReader(fp) for read in reader: print(read['2']) read_file1() ''' 輸出: ['4', '5', '6'] ['7', '8', '9']
''' read_file2() ''' 輸出: 5 8 ''' def write_file1(): header = ['user', 'age'] values = [ ('張三', '12'), ('李四', '13') ] # newline預設為'\n',意思就是每寫入一條資料就會多一個換行 # 如果這裡編碼出錯,可以指定encoding的值 with open('2.csv','w',newline='') as fp: writer = csv.writer(fp) writer.writerow(header) writer.writerows(values) write_file1()
def write_file2(): header = ['user', 'age'] values = [ {'user':'張三','age': '12'}, {'user':'李四','age':'13'} ] # newline預設為'\n',意思就是每寫入一條資料就會多一個換行 # 如果這裡編碼出錯,可以指定encoding的值 with open('2.csv','w',newline='') as fp: writer = csv.DictWriter(fp,header) # 寫入字典頭 writer.writeheader() # 將字典資料寫入 writer.writerows(values) write_file2() ''' 兩個函式執行後的結果一樣,檔案2.csv中資料為: user,age 張三,12 李四,13 '''