检查值是否在列表中的另一个值之前

时间:2016-09-22 06:44:16

标签: python indexing

我想检查一个值是否在列表中的另一个值之前。我回答了这个问题: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')

1 个答案:

答案 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?