如何在Python中打印字符串内的内容?

如何在Python中打印字符串内的内容?,python,api,get,python-requests,Python,Api,Get,Python Requests,我正在使用Python3.8和请求模块测试Rapidapi.com上的API。代码如下: import requests url = "https://netflix-unofficial.p.rapidapi.com/api/genres" headers = { 'x-rapidapi-host': "netflix-unofficial.p.rapidapi.com", 'x-rapidapi-key': //here goes my private key } re

我正在使用Python3.8和请求模块测试Rapidapi.com上的API。代码如下:

import requests

url = "https://netflix-unofficial.p.rapidapi.com/api/genres"

headers = {
    'x-rapidapi-host': "netflix-unofficial.p.rapidapi.com",
    'x-rapidapi-key': //here goes my private key
}

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

data = response.text

print(data)
我得到的输出如下:

{"data":["Action & Adventure","Anime Features","Children & Family Movies","Classic Movies","Cult Movies","Documentaries","Dramas","Faith & Spirituality","Horror Movies","Independent Movies","International Movies","LGBTQ Movies","Movies","Music & Musicals","Romantic Movies","Sci-Fi & Fantasy","Sports Movies","Stand-Up Comedy","Thrillers"]}
但我希望能够访问列出的每一种流派,并以如下方式展示:

- Genre 1
- Genre 2
...
- Genre n 

类型似乎作为数组中的单个元素存储在变量数据中。可以针对数据变量的长度运行循环,然后打印各个元素:

print(data[i])

您的字符串如下所示

Gene_Dict = '{"data":["Action & Adventure","Anime Features","Children & Family Movies","Classic Movies","Cult Movies","Documentaries","Dramas","Faith & Spirituality","Horror Movies","Independent Movies","International Movies","LGBTQ Movies","Movies","Music & Musicals","Romantic Movies","Sci-Fi & Fantasy","Sports Movies","Stand-Up Comedy","Thrillers"]}'
Gene_Dict = Gene_Dict.strip()     
Gene_Dict = eval(Gene_Dict)

for ele in Gene_Dict[Gene_Dict.keys()[0]]: print ele

您的数据实际上是JSON。您可以将此字符串转换为Python对象,然后对其执行任何操作:

import json

data = '{"data":["Action & Adventure","Anime Features","Children & Family Movies","Classic Movies","Cult Movies","Documentaries","Dramas","Faith & Spirituality","Horror Movies","Independent Movies","International Movies","LGBTQ Movies","Movies","Music & Musicals","Romantic Movies","Sci-Fi & Fantasy","Sports Movies","Stand-Up Comedy","Thrillers"]}'

genres = json.loads(data)['data']
# ['Action & Adventure', 'Anime Features', 'Children & Family Movies', ...]
逐行打印:

print('\n'.join(genres))
或者,如果需要连字符:

print('\n'.join([f'-{genre}' for genre in genres]))
输出:

-Action & Adventure
-Anime Features
-Children & Family Movies
-Classic Movies
...
您可以直接使用
请求
为您操作JSON:

import requests

url = "https://netflix-unofficial.p.rapidapi.com/api/genres"

headers = {
    'x-rapidapi-host': "netflix-unofficial.p.rapidapi.com",
    'x-rapidapi-key': //here goes my private key
}

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

data = response.json()
genres = data['data']

那么您想打印文本
“-Genre”
,后跟一个数字吗?你是怎么得到这个的?不,我想输出与流派名称并列的连字符(“-”)。我已经尝试过了,但它将元素作为整个字符串的单个字符。由于请求模块中的.text方法,数据未被视为变量。错误:“str”对象没有属性“keys”,在代码中添加了几行以将字符串转换为字典。不要使用
eval
,这是非常糟糕的做法。数据是JSON,应该使用JSON。另外,
Gene_Dict.keys()[0]
是不必要的,也是危险的,因为1/钥匙是众所周知的,它是
'data'
,2/如果有多个钥匙,就不能保证您会得到正确的钥匙。另外,输出的格式也没有按预期的那样。你可以看看为什么不使用eval。太好了,它成功了!我以前使用ast和eval()进行过测试,但没有结果。另外,关于
eval
,请查看