I am new to python and facing this error: string indices must be integers while parsing a JSON file.
JSON File:
{"NFLTeams": [
{"code":"ARI","fullName":"Arizona Cardinals","shortName":"Arizona"},
{"code":"ATL","fullName":"Atlanta Falcons","shortName":"Atlanta"},
{"code":"WAS","fullName":"Washington Redskins","shortName":"Washington"}
]}
My code:
import urllib.request as ur
import urllib.parse
import json
url = 'http://www.fantasyfootballnerd.com/service/nfl-teams/json/test/'
user_agent = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64)'
values = {'name' : 'Michael Foord',
'location' : 'Northampton',
'language' : 'Python' }
headers = { 'User-Agent' : user_agent }
data = urllib.parse.urlencode(values)
data = data.encode('ascii')
req = urllib.request.Request(url, data, headers)
response = urllib.request.urlopen(req)
the_page = response.read().decode('utf-8')
print (the_page)
team_data = json.loads(the_page)
print (type(team_data)) // team_data is type dict
for item in team_data:
print (item['NFLTeams'][0]["code"])
print (item['NFLTeams'][0]['fullName'])
print (item['NFLTeams'][0]['shortName'])
I have tried to print the following:
print (item['NFLTeams']["code"])
And this:
for item in team_data['NFLTeams'].values():
print (item["code"])
print (item['fullName'])
print (item['shortName'])
Which gives me this error:
for item in team_data['NFLTeams'].values():
AttributeError: 'list' object has no attribute 'values'
Can anyone please help me figure out what's going on? Thank you.
team_data['NFLTeams']is alist, not adict, and therefore does not have avaluesmethod. You shouldprintthe entireteam_dataobject to see what it actually is, and then you can work out how to access it.pythonquestion on Stack Overflow, please specify which version of python you are using, and tag your question eitherpython-2orpython-3. It may not be relevant to this question, but it generally helps.