Использование xlrd для чтения файла Excel xls, содержащего символы китайского и / или хинди

http://scienceoss.com/read-excel-files-from-python/comment-page-1/#comment-1051

Из приведенной выше ссылки я использовал эту утилиту для чтения файла XLS. Если файл XLS содержит разные языковые символы, такие как китайский или хинди, он не выводит их правильно. Есть ли обходной путь для этого?

После Googling я нашел это:

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'

4 Solutions collect form web for “Использование xlrd для чтения файла Excel xls, содержащего символы китайского и / или хинди”

Согласно документации модуля xlrd, правильным параметром является: encoding_override = "cp1252", а не кодировка = "cp1252" .

Из того, как вы импортируете модуль xlrd, вы должны вызывать функцию как xlrd.open_workbook, но в примере кода вы используете функцию напрямую, как если бы вы использовали «из xlrd import *».

[dis] претендент: Я автор xlrd.

«" Если xls содержит разные языковые символы, такие как chine или hindi.It не выводит точные формулировки. У нас есть работа для этого .. "" "

Аргумент encoding_override (как описано в документации) используется ТОЛЬКО для OLD-файлов (созданных Excels ранее Excel 97 (это 1997 год)), и только тогда, когда внутренняя запись «кодовой страницы» отсутствует или неверна.

Примечание. Старый файл с китайскими иероглифами: переопределение с помощью «cp1252» гарантированно приведет к возникновению исключения.

Примечание: старый файл с символами «хинди» (Devanagari?): Очень маловероятно … насколько я знаю, никогда не было официально поддерживаемой кодовой страницы для любого скрипта ISCII, и я не слышал о какой-либо неофициальной. Любая информация по этой теме и / или примерным файлам будет очень желанной.

Excel 97 и более поздние версии записывают все текстовые данные (эффективно) UTF-16LE. Значение encoding_override игнорируется, если файл является допустимым файлом Excel-97 или более поздним.

Независимо от версии Excel, которая создала файл, (как задокументировано) xlrd возвращает строки Unicode. Ваши проблемы гораздо чаще связаны с тем, как вы показываете или конвертируете эти строки unicode.

Для получения дополнительной помощи отредактируйте свой вопрос, чтобы показать примеры фактического вывода вместе с «точной формулировкой».

В стандартной библиотеке есть модуль csv, который обрабатывает unicode в Python 3.1.

Предупреждение: в Python 2.x библиотека csv не обрабатывает unicode.

Аналогичный вопрос. Ответ был вызван проблемой, а не XLRD.

Ответьте, как настроить ваш сценарий на UTF-8 -> https://stackoverflow.com/a/17628350/713

  • Какую библиотеку я должен использовать для написания XLS из Linux / Python?
  • Python - проверить, существует ли лист в моем документе xls
  • Python - лучший язык программирования в мире.