python對csv檔案讀寫的兩種方式 和 讀寫檔案編碼問題處理
阿新 • • 發佈:2020-08-03
''' 如果檔案讀取資料出錯,可以考慮加一個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 '''