чтение китайского символа из файла Excel python3

#python #excel

#python #excel

Вопрос:

У меня есть файл Excel, который содержит два столбца, первый на китайском языке, а второй — просто ссылка. Я попробовал два метода, которые я нашел здесь. но это не сработало, и я не могу распечатать значение в консоли, я изменил свою переменную кодировки в настройках (pycharm) на U8, по-прежнему не работает. Я использовал библиотеки Pandas и xlrd, обе не работали, пока они работали для других, кто опубликовал. это мой текущий код :

 from xlrd import open_workbook
class Arm(object):
    def __init__(self, id, dsp_name):
        self.id = id
        self.dsp_name = dsp_name

    def __str__(self):
        return("Arm object:n"
               "  Arm_id = {0}n"
               "  DSPName = {1}n"
               .format(self.id, self.dsp_name))

if __name__ == '__main__':

    wb = open_workbook('test.xls')
    for sheet in wb.sheets():
        print(sheet)
        number_of_rows = sheet.nrows
        number_of_columns = sheet.ncols

        items = []

        rows = []
        for row in range(1, number_of_rows):
            values = []
            for col in range(number_of_columns):
                value = str(sheet.cell(row, col).value)
                for a in value:
                    print('n'.join([a]))
                values.append(value)

                print(value)
    for item in items:
        print (item)
        print("Accessing one single value (eg. DSPName): {0}".format(item.dsp_name))
        print
  

очевидно, что это не работает, я просто возился с ним после отказа.
Файл : http://www59.zippyshare.com/v/UxITFjis/file.html

Ответ №1:

Дело не в кодировании, вы не получаете доступ к нужным строкам.

В строке 24
for row in range(1, number_of_rows):

почему вы хотите начать с 1 вместо 0.
попробуйте for row in range(number_of_rows):

Ответ №2:

Ну, проблема, с которой я столкнулся, заключалась не в чтении китайских символов на самом деле! моя проблема заключается в печати в консоли. Я думал, что кодировщик печати работает нормально, и я просто не прочитал его символы, но этот код работает нормально :

 from xlrd import open_workbook

wb = open_workbook('test.xls')
messages = []
links = []

for sheet in wb.sheets():
    number_of_rows = sheet.nrows
    number_of_columns = sheet.ncols
    for row in range(1, number_of_rows):
        i = 0
        for col in range(number_of_columns):
            value  = (sheet.cell(row,col).value).encode('gbk')
            if i ==0:
                messages.append(value)
            else:
                links.append(value)
            i =1



print(links)
  

чтобы проверить это, я вставляю первый результат в драйвер selenium (поскольку я все равно собирался его использовать)

 element = driver.find_element_by_class_name('email').send_keys(str(messages[0],'gbk'))
  

и это работает как шарм!