#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 (число), а не список».