有沒有更改csv和xlrd軟件包處理空單元格的默認方式的選項?默認情況下,空單元格被分配一個空字符串value =''。當使用數據庫時,這是有問題的,因爲空字符串不是一個None值,許多與數據庫接口的Python包(例如SQLAlchemy)可以作爲空處理數據庫消耗。python:xlrd/csv - xlrd/csv包將對象讀入內存時的空單元格處理
例如,如果在假設爲十進制/整數/浮點數/雙精度的字段中出現空單元格,則數據庫將拋出異常,因爲將字符串插入到類型爲decimal /整數/浮點/雙精度。
我還沒有找到任何示例或說明我如何做到這一點的文檔。我目前的做法是將檢查數據並執行以下操作:
if item[i] == '':
item[i] = None
這樣做的問題是,我沒有自己的數據,並有超過其質量無法控制。我可以想象,這將是一個普遍的現象,因爲很多應用程序正在使用由其他來源生成的文件/數據。
如果有辦法改變默認治療方法,那麼在我看來這將是一個明智的方法。
你說「還發現,在某些情況下,文件格式是不是UTF-8 ...」。有效Excel .XLS文件中的文本從不用UTF-8編碼。有效的.XLSX文件中的文本預計將以UTF-8編碼(XML默認值)。無論如何,xlrd會返回Unocode。你一定在談論csv文件。 – 2013-03-29 11:13:41