學習pandas遇到的坑 一

2021-09-11 02:05:02 字數 1633 閱讀 2446

read_csv函式enconding引數的預設值是utf-8

而csv是用utf-8編碼的,而excel是ansi編碼。

這裡順便說一下xls與xlsx的區別,xls是excel2003及以前版本生成的檔案格式。xlsx是excel2007及以後版本生成的檔案格式

順便說一下怎麼建立乙個utf-8編碼的csv:

(1)新建乙個excel修改字尾名 ×

(2)新建乙個txt→開啟txt→另存為→選擇編碼和修改字尾 ×

(3) 新建txt→修改字尾→用notepad++開啟→轉換編碼 √

如果需要迴圈讀取多個csv檔案,而每個csv檔案的編碼都可能不一樣,那麼最好還是先把所有這些csv統一轉為utf-8,再集中進行讀取,轉換檔案的編碼格式需要用到python自帶的codecs模組

import codecs

def handleencoding(original_file,newfile):

#newfile=original_file[0:original_file.rfind(.)]+'_copy.csv'

f=open(original_file,'rb+')

content=f.read()#讀取檔案內容,content為bytes型別,而非string型別

source_encoding='utf-8'

#####確定encoding型別

try:

content.decode('utf-8').encode('utf-8')

source_encoding='utf-8'

except:

try:

content.decode('gbk').encode('utf-8')

source_encoding='gbk'

except:

try:

content.decode('gb2312').encode('utf-8')

source_encoding='gb2312'

except:

try:

content.decode('gb18030').encode('utf-8')

source_encoding='gb18030'

except:

try:

content.decode('big5').encode('utf-8')

source_encoding='gb18030'

except:

content.decode('cp936').encode('utf-8')

source_encoding='cp936'

f.close()

#####按照確定的encoding讀取檔案內容,並另存為utf-8編碼:

block_size=4096

with codecs.open(original_file,'r',source_encoding) as f:

with codecs.open(newfile,'w','utf-8') as f2:

while true:

content=f.read(block_size)

if not content:

break

f2.write(content)

學習Django遇到的坑

1.安裝xadmin,生成資料表一直報錯,不明白!原因 未使用django formtools最新版包,wtf,git上給出的依賴包是1.0版本的啊!2.關於djangorestframwork配置問題 頁面顯示設定 rest framework 3.在修改了models.py後,用python m...

學習SpringBoot遇到的坑

使用管理員許可權啟動cmd,結束占用該埠的程式 搜尋占用8080埠的程式 netstat aon findstr 8080 檢視占用埠的程式資訊,6036為占用埠程式的pid tasklist findstr 6036 結束占用埠的程式 taskkill pid 6036 f org.springf...

MySQL學習與遇到的坑

最近之前的專案交維,需要對之前開發的系統進行許可權整理以及許可權控制,專案之前的需求有乙個利用mysql的federated引擎實現資料庫表對映,原理是在本地建立檢視,在通過在遠端的資料庫連線這個檢視。備註 設想是新建使用者用來遠端訪問我們的檢視 新使用者只給查詢許可權 root賬號建立檢視,當時r...