2

I'm trying to export a list of github issues from a repository to csv, but i keep coming across a few errors. I've tried looking into it on other questions but they didn't seem to help me out. I'm currently using python2.7.9 on SLES12 vm.

def write_issues(response):
    for issue in response.json():
        labels = issue['labels']
        for label in labels:
            if label['name'] == "Client Requested":
                csvout.writerow([issue['number'],
                issue['title'].encode('utf-8'),
                issue['body'].encode('utf-8'),
                issue['created_at'],
                issue['updated_at']])

getting these errors

Traceback (most recent call last):
  File "export.py", line 50, in <module>
    write_issues(r)
  File "export.py", line 24, in write_issues
    labels = issue['labels']
TypeError: string indices must be integers
Nat Ritmeyer
  • 5,634
  • 8
  • 45
  • 58
watchingdogs
  • 531
  • 1
  • 7
  • 12

1 Answers1

1

response.json() definitely doesn't contain a list of "issue" dictionaries. You are either making a request to an invalid or incorrect endpoint, or hitting a rate limit. Check an actual value of response.json() before the loop.

Works for me:

>>> import requests
>>> 
>>> url = "https://api.github.com/repos/angular/protractor/issues"
>>> response = requests.get(url)
>>> for issue in response.json():
...     labels = issue['labels']
...     for label in labels:
...         print label
... 
{u'url': u'https://api.github.com/repos/angular/protractor/labels/type:%20docs', u'color': u'5319e7', u'name': u'type: docs'}
{u'url': u'https://api.github.com/repos/angular/protractor/labels/type:%20question', u'color': u'f7c6c7', u'name': u'type: question'}
{u'url': u'https://api.github.com/repos/angular/protractor/labels/type:%20feature%20request', u'color': u'009800', u'name': u'type: feature request'}
...
alecxe
  • 462,703
  • 120
  • 1,088
  • 1,195