[英]Using xlrd to read Excel xls file containing Chinese and/or Hindi characters
http://scienceoss.com/read-excel-files-from-python/comment-page-1/#comment-1051
從上面的鏈接,我使用這個實用程序來讀取一個 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'
[dis]claimer: 我是 xlrd 的作者。
如果 xls 包含不同的語言字符,如中文或印地語。它不會輸出確切的措辭。是否有解決方法。
encoding_override 參數(如文檔中所述)僅用於舊文件(由早於 Excel 97(即 1997 年)的 Excel 生成),並且僅在內部記錄的“代碼頁”丟失或不正確時使用。
注意:帶有中文字符的舊文件:用 'cp1252' 覆蓋肯定會引發異常。
注意:帶有“印地語”(梵文?)字符的舊文件:不太可能......據我所知,從來沒有任何 ISCII 腳本有官方支持的代碼頁,我也沒有聽說過任何非官方的代碼頁。 非常歡迎有關此主題和/或示例文件的任何信息。
Excel 97 及更高版本以(有效)UTF-16LE 記錄所有文本數據。 如果文件是有效的 Excel-97 或更高版本的文件,則 encoding_override 將被忽略。
無論生成文件的 Excel 版本是什么,(如文檔所述)xlrd 都會返回 unicode 字符串。 您的問題更有可能與您如何顯示或轉換這些 unicode 字符串有關。
如需進一步幫助,請編輯您的問題以顯示實際輸出的示例以及“確切的措辭”。
根據 xlrd模塊文檔,正確的參數是: encoding_override="cp1252"
而不是encoding="cp1252"
。
從您導入 xlrd 模塊的方式來看,您應該將函數調用為xlrd.open_workbook
但在示例代碼中您直接使用該函數,就像您使用from xlrd import *
。
標准庫中有一個 csv 模塊,它處理 Python 3.1 中的 unicode。
警告:在Python 2.x中的CSV庫不處理Unicode的。
有一個類似的問題。 答案是輸出導致問題,而不是 XLRD。
回答如何將腳本設置為 UTF-8 -> https://stackoverflow.com/a/17628350/713
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.