csv 基本操作, 報錯解決(UnicodeEncodeError: 'utf-8' codec can't encode characters in position 232-233: surrogates not allowed)


最常用的一種方法,利用pandas包

import pandas as pd

#任意的多組列表
a = [1,2,3]
b = [4,5,6]    

#字典中的key值即為csv中列名
dataframe = pd.DataFrame({'a_name':a,'b_name':b})

#將DataFrame存儲為csv,index表示是否顯示行名,default=True
dataframe.to_csv("test.csv",index=False,sep=',')
 
a_name  b_name
0       1       4
1       2       5
2       3       6
 

 

同樣pandas也提供簡單的讀csv方法

import pandas as pd
data = pd.read_csv('test.csv')
 

會得到一個DataFrame類型的data,不熟悉處理方法可以參考pandas十分鍾入門


另一種方法用csv包,一行一行寫入

import csv

#python2可以用file替代open
with open("test.csv","w") as csvfile: 
    writer = csv.writer(csvfile)

    #先寫入columns_name
    writer.writerow(["index","a_name","b_name"])
    #寫入多行用writerows
    writer.writerows([[0,1,3],[1,2,3],[2,3,4]])
 
index   a_name  b_name
0       1       3
1       2       3
2       3       4
 

 

讀取csv文件用reader

import csv
with open("test.csv","r") as csvfile:
    reader = csv.reader(csvfile)
    #這里不需要readlines
    for line in reader:
        print line
 
 
如果報錯,使用以下方法:
錯誤UnicodeEncodeError: 'utf-8' codec can't encode characters in position 232-233: surrogates not allowed
import csv
with open(file,'w',encoding='utf8', errors='surrogatepass') as csvfile:   csv_writer = csv.writer(csvfile)   csv_writer.writerow(headers)   csv_writer.writerow(row) 



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM