Home > Net >  String indicies must be integers in Python
String indicies must be integers in Python

Time:07-18

I'm trying to get url value from the api, but have an issue saying TypeError: string indices must be integers

Here is the array that I get from api:

[
{
"created_utc": 1643524062,
"title": "title",
"url": "https://i.redd.it/tmd5shz9rre81.gif",
},
{
"created_utc": 1643530657,
"title": "title",
"url": "https://i.redd.it/qqjykysxase81.gif",
}
]

And here is the code I use to get the url:

url = "https://reddit-meme.p.rapidapi.com/memes/trending"

headers = {
    "X-RapidAPI-Key": "83df5aba87msh4580fa40781b33cp12157bjsnb4b412cb57da",
    "X-RapidAPI-Host": "reddit-meme.p.rapidapi.com"
}

response = requests.request("GET", url, headers=headers)

print(response.text[0]["url"])

What am I doing wrong?

CodePudding user response:

response.text is a string, you have to parse it first, with the json librarie, like this:

import requests
import json


url = "https://reddit-meme.p.rapidapi.com/memes/trending"

headers = {
    "X-RapidAPI-Key": "83df5aba87msh4580fa40781b33cp12157bjsnb4b412cb57da",
    "X-RapidAPI-Host": "reddit-meme.p.rapidapi.com"
}

response = requests.request("GET", url, headers=headers)
data = json.loads(response.text)

print(data[0]["url"])

CodePudding user response:

response.text is a json string, you need to parse the text using some parsing library to get the url. You can use json library to do the same.

import json
json_string = json.loads(response.text)
print(json_string[0]['url'])

This gives us the expected output:

'https://i.redd.it/tmd5shz9rre81.gif'
  • Related