我想检查一个值是否在列表中的另一个值之前。我回答了这个问题:TypeError: 'GitHubIterator' object does not support indexing,它允许我访问列表中的最后一条评论。我想扩展此内容以查看拉取请求中的所有评论,检查#hold-off
评论是否在#sign-off comment
之后。我可以使用print语句打印注释,但是错误地查看值的顺序时出错,并显示错误消息:AttributeError: 'IssueComment' object has no attribute 'index'
。
我想我需要以某种方式将注释的主体放到列表中,然后使用index来确定顺序,因为迭代器不支持索引。但是我没有成功地将其付诸实践。
hold_off_regex_search_string = re.compile(r"\B#hold-off\b", re.IGNORECASE)
sign_off_regex_search_string = re.compile(r"\B#sign-off\b", re.IGNORECASE)
for comments in list(GitAuth.repo.issue(prs.number).comments()):
print (comments.body)
if comments.index(hold_off_regex_search_string.search(comments.body)) > comments.index(sign_off_regex_search_string.search(comments.body)):
print('True')
答案 0 :(得分:1)
看起来你让自己感到困惑。 for
循环已按顺序迭代注释。您需要做的就是测试#hold-off
和#sign-off
模式的每条评论,并报告您首先看到的评论。
hold_off_regex_search_string = re.compile(r"\B#hold-off\b", re.IGNORECASE)
sign_off_regex_search_string = re.compile(r"\B#sign-off\b", re.IGNORECASE)
special_comments = []
for comments in list(GitAuth.repo.issue(prs.number).comments()):
if hold_off_regex_search_string.search(comments.body):
special_comments.append('HOLD OFF')
elif sign_off_regex_search_string.search(comments.body):
special_comments.append('SIGN OFF')
if special_comments == ['HOLD OFF', 'SIGN OFF']:
# add label
elif special_comments == ['SIGN OFF', 'HOLD OFF']:
# remove label
elif special_comments == ['HOLD OFF']:
# handle it
elif special_comments == ['SIGN OFF']:
# handle it
elif special_comments == []:
# handle it
else:
# maybe multiple sign offs or hold offs?