TypeError: объект GitHubIterator не поддерживает индексирование
Используя github3.py, я хочу получить последний комментарий в списке комментариев, связанных с запросом извлечения, а затем найти в нем строку. Я попробовал код ниже, но я получаю ошибку TypeError: 'GitHubIterator' object does not support indexing
(без индексации я могу получить список комментариев).
for comments in list(GitAuth.repo.issue(prs.number).comments()[-1]):
if sign_off_regex_search_string.search(comments.body) and comments.user.login == githubID:
sign_off_by_author_search_string_found = 'True'
break
1 ответ
Я уверен, что первая строка вашего кода не делает то, что вы хотите. Вы пытаетесь индексировать (с [-1]
) объект, который не поддерживает индексацию (это своего рода итератор). Вы также включили вызов списка, и в этом списке выполняется цикл. Я думаю, что вам не нужна петля. Пытаться:
comments = list(GitAuth.repo.issue(prs.number).comments())[-1]
Я переместил закрывающую скобку из list
позвонить, чтобы прийти до индексации. Это означает, что индексация происходит в списке, а не в итераторе. Однако это тратит немного памяти, так как все комментарии сохраняются в списке, прежде чем мы проиндексируем последний и выбросим список. Если использование памяти является проблемой, вы можете вернуть цикл и избавиться от list
вызов:
for comments in GitAuth.repo.issue(prs.number).comments():
pass # the purpose of this loop is to get the last `comments` value
Остальная часть кода не должна быть внутри этого цикла. Переменная цикла comments
(что, вероятно, должно быть comment
, поскольку он ссылается на один элемент), он останется связанным с последним значением из итератора после окончания цикла. Это то, что вы хотите сделать поиск.