XLRDを使用して、中国語および/またはヒンディー語の文字を含むExcel XLSファイルを読み取る
質問
http://sciencoss.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'
解決
XLRDによると モジュールのドキュメント, 、正しいパラメーターは次のとおりです。 encoding_override = "cp1252" そしてそうではありません encoding = "cp1252".
XLRDモジュールのインポート方法から、関数をxlrd.open_workbookとして呼び出す必要がありますが、例では「xlrd import *from」を使用したかのように関数を直接使用します。
他のヒント
DIS]請求者:私はXLRDの著者です。
XLSにChineやHindi.itのような異なる言語文字が含まれている場合、正確な文言が出力されません。
encoding_override引数は(ドキュメントで説明されているとおり)古いファイル(Excel 97(1997年)よりも早い段階で作成された)でのみ使用され、その後、内部で記録された「コーデページ」が欠落または不正確である場合にのみです。
注:漢字を備えた古いファイル:「CP1252」でオーバーライドすると、例外が発生することが保証されています。
注:「ヒンディー語」(devanagari?)文字を備えた古いファイル:非常にありそうもない...私が知っている限り、ISCIIスクリプトのいずれにも公式にサポートされたコーデュページはありませんでした。このトピックおよび/またはサンプルファイルに関する情報は大歓迎です。
Excel 97以降のバージョンは、すべてのテキストデータを(効果的に)UTF-16LEで記録します。ファイルが有効なExcel-97またはLaterファイルである場合、encoding_overrideは無視されます。
ファイルを生成したExcelのバージョンが何であれ(文書化された)XLRDはUnicode文字列を返します。あなたの問題は、それらのユニコード文字列を表示または変換する方法に関連している可能性がはるかに高くなります。
さらなる支援については、質問を編集して、実際の出力の例を「正確な言葉遣い」とともに示してください。
標準ライブラリには、Python 3.1のUnicodeを処理するCSVモジュールがあります。
警告: Python 2.xでは、CSVライブラリが行います いいえ Unicodeを処理します。
同様の質問があります。答えは、出力がXLRDではなく問題を引き起こしていたことでした。
スクリプトをUTF -8に設定する方法について答えてください - >https://stackoverflow.com/a/17628350/713