Ошибка типа: объект ‘int’ не может быть подписан с помощью xlrd

#python #excel #xlrd

#python #excel #xlrd

Вопрос:

Я хотел бы считывать данные с листа Excel с помощью xlrd. Я хочу просмотреть определенные ячейки из Excel, и если я не нашел число «1», я хочу добавить 1 к номеру строки и начать все сначала. Моя проблема в том, что когда я указываю ячейку в цикле for, я получаю TypeError: объект ‘int’ не подлежит подписке.

 import xlrd

Excelsheet1 = "info_2020.xlsx" 
Book1 = xlrd.open_workbook(Excelsheet1) 
first_sheet = Book1.sheet_by_index(9)

row_num = 1

for look_for_one in first_sheet.row_values(row_num[12]):
        if look_for_one == 1:
            print(first_sheet.row_values(row_num)[25])
        else:
            row_num  = 1
  

Кто-нибудь знает, что не так? Спасибо!

Комментарии:

1. Похоже, вы забыли скобку и написали first_sheet.row_values(row_num[12]) вместо first_sheet.row_values(row_num)[12] . Таким образом, сообщение об ошибке » int is not subscriptable «, что означает «Я не понимаю row_num[12] , потому row_num что это int (число), а не список».

2. всегда помещайте полное сообщение об ошибке (начинающееся со слова «Traceback») в вопрос (не комментарий) в виде текста (не скриншота). Есть и другая полезная информация.

3. если сообщение об ошибке показывает вам, в какой строке проблема, тогда используйте print(...) и print(type(...)) , чтобы посмотреть, что у вас есть в переменных.

4. Спасибо, Стеф, ты прав. Теперь это работает!

5. @Stef Для меня это был бы правильный ответ, который нужно опубликовать.

Ответ №1:

Похоже, вы забыли скобку и написали first_sheet.row_values(row_num[12]) вместо first_sheet.row_values(row_num)[12] .

Таким образом, сообщение об ошибке « int is not subscriptable «, что означает «Я не понимаю row_num[12] , потому что row_num — это int (число), а не список».