2010-08-18 86 views
3

http://scienceoss.com/read-excel-files-from-python/comment-page-1/#comment-1051使用xlrd讀取包含中國和/或印地文字符

從上面的鏈接的Excel xls文件,我用這個工具來讀取XLS文件。如果XLS文件包含不同的語言字符(如中文或印地文),則不會正確輸出它們。有沒有解決方法?

谷歌搜索後,我發現這一點:

import xlrd 

def upload_xls(dir,file,request): 
    try: 
     global msg 
     global row_num 
     row_num = [] 
     header_arr = [] 
     global file_path 
     file_path = dir 
     #reader = csv.reader(open(file), delimiter='#', quotechar='"') 
     book = xlrd.open_workbook('dodgy.xls',encoding='cp1252') ##To specify UTF8-encoding 
     wb.sheet_names() 
     sh = wb.sheet_by_index(0) 
     valid_xl_format = 0 
     invalid_xl_format = 0 
    except: 
     print "Error 

但有一個錯誤在該行book = open_workbook('dodgy.xls',encoding='cp1252')

TypeError: open_workbook() got an unexpected keyword argument 'encoding'

+0

你能發佈您的代碼的其他人呢?這條線給出的確切的錯誤?這聽起來像你正在嘗試使用你還沒有定義或導入的函數。 – 2010-08-18 12:00:01

+0

請參閱編輯.. – Hulk 2010-08-18 12:05:55

+1

您沒有閱讀CSV,您正在閱讀XLS。 – katrielalex 2010-08-18 12:35:15

回答

4

按照xlrd module documentation,正確的參數是:encoding_override = 「CP1252」和不編碼= 「CP1252」

從導入xlrd模塊的方式來看,您應該將函數調用爲xlrd.open_workbook,但在示例代碼中直接使用該函數,就像您使用過「from xlrd import *」一樣。

+0

我看到你從第二段改正了我的觀點。 – 2010-08-18 12:26:23

+0

正式正確,但不太可能解決OP的真正問題。看到我的答案。 – 2010-08-19 00:40:57

2

有一個在標準庫中的CSV模塊,它在Python 3.1中處理unicode。

警告:在Python 2.x中的CSV庫做處理Unicode。

8

[dis] claimer:我是xlrd的作者。

「」「如果XLS包含不同語言的字符,如折角或hindi.It周圍不輸出準確的wordings.Is有一個工作本。」「」

的encoding_override的說法是(作爲解釋在文檔中)僅用於OLD文件(由Excels早於Excel 97(即1997年)生成),並且僅在內部記錄的「代碼頁」丟失或不正確時使用。

注意:帶有中文字符的舊文件:使用'cp1252'覆蓋保證會引發異常。

注意:帶有「北印度語」(梵文?)字符的舊文件:非常不可能...據我所知,從未有任何ISCII腳本的官方支持的代碼頁,並且我沒有聽說過任何非官方的。有關此主題和/或示例文件的任何信息都將非常受歡迎。

Excel 97及更高版本以(有效)UTF-16LE記錄所有文本數據。如果文件是有效的Excel 97或更高版本的文件,則會忽略encoding_override。

無論生成該文件的Excel版本(如文檔所述),xlrd都會返回unicode字符串。您的問題更可能與您如何顯示或轉換這些Unicode字符串有關。

如需進一步的幫助,請編輯您的問題以顯示實際輸出的示例以及「準確措辭」。

相關問題