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

StackOverflow https://stackoverflow.com/questions/3511743

  •  29-09-2019
  •  | 
  •  

Вопрос

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'

Это было полезно?

Решение

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

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

Другие советы

DIS] претендент: я автор XLRD.

Если XLS содержит разные языковые символы, такие как Chine или Hindi. Это не выводит точных выпусков. Есть ли это работа для этого.

Аргумент Encoding_override (как объясняется в документации) используется только для старых файлов (созданных Excels раньше, чем Excel 97 (это 1997 год)), и только тогда, когда внутренняя записанная «кодехация» проходит для внутренней записанного.

Примечание. Старый файл с китайскими символами: переоценка с помощью 'CP1252' гарантированно поднимет исключение.

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

Excel 97 и более поздние версии записывают все текстовые данные в (эффективно) UTF-16LE. Кодировка_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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top