2016-07-27 10 views
0

github3.pyを使用して、プルリクエストに関連付けられたコメントのリストで最後のコメントを取得してから文字列を検索します。私は以下のコードを試しましたが、エラーTypeError: 'GitHubIterator' object does not support indexing(インデックスなしで、私はコメントのリストを取得することができます)を取得します。TypeError: 'GitHubIterator'オブジェクトはインデックス作成をサポートしていません

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であるはずです)は、ループの終了後にイテレータからの最後の値にバインドされたままです。それがあなたの検索をしたいものです。

関連する問題