Python讀取 csv文件中文亂碼處理


需求:
按行解析讀取csv文件存入關系型數據庫——主要是中文字體解析;
遇到的問題:
直接解析出來的數據為list形式,而且編碼格式為unicode;
解決問題:
前提了解:
 中文編碼的規則 —— GB2312 

  字符串在Python內部的表示是unicode編碼,在做編碼轉換時,通常需要以unicode作為中間編碼,即先將其他編碼的字符串解碼(decode)成unicode,再從unicode編碼(encode)成另一種編碼。

  decode的作用是將其他編碼的字符串轉換成unicode編碼,如str1.decode(‘gb2312’),表示將gb2312編碼的字符串轉換成unicode編碼。

  encode的作用是將unicode編碼轉換成其他編碼的字符串,如str2.encode(‘gb2312’),表示將unicode編碼的字符串轉換成gb2312編碼。

示例如下:
filepath:文件絕對路徑
with open(filepath, mode='rb') as f:
reader = csv.reader(f)
# i 設置按行獲取數據
for i, rows in enumerate(reader):
try:
# 解決讀取csv文件中文格式亂碼——gb2312只支持普通中文字符
row1 = [row1.decode('GB2312').encode('utf-8') for row1 in rows]
except:
       #存在繁體時

#gbk支持繁體中文和日文假文
row1 = [row1.decode('GBK').encode('utf-8') for row1 in rows]


免責聲明!

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



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