在API JSON响应Python中查找特定关键字

2024-10-01 19:15:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从API获取多个问题的JSON响应,并且我能够成功地获得响应。我想执行的下一部分是仅获取/打印那些在JSON标记“body”中具有特定关键字“moviepass”和“login”的行。这是我的密码

import json
import requests

api_url = '***************************************'
headers = {'Content-Type': 'application/json',
           'Authorization':'Basic **************************'}

response = requests.get(api_url, headers=headers)
#print(response.text)

words = ('moviepass', 'login')

def lookingfor(words):
    data = response.text
    for line in data:
        for word in words:
            match = re.findall(word, line['body'])
                if match:
                    print((word, line[]))


lookingfor(words)

我的JSON看起来像:

[{"tags":["moviepass"],"assignee_name":null,"app_id":"*******","hs_user_id":"*******","title":"1234","redacted":false,"updated_at":1611753805497,"messages":[{"body":"moviepass - Not '
 'sure if this is what you guys meant or not but here '
 'haha.","created_at":********,"author":{"name":"abc","id":"*****","emails":["abc@qwerty.com"]},"origin":"end-user","id":"*********"}]

Tags: importapiidjsonurlresponselinelogin
2条回答

转换JSON响应并解析它——它是一个[nested]dict列表。您可以使用Response.json()方法,无需导入json

import requests

api_url = '***************************************'
headers = {'Content-Type': 'application/json',
           'Authorization':'Basic **************************'}
words = ('moviepass', 'login')

response = requests.get(api_url, headers=headers)
data = response.json()
for item in data:
    if any(word in item.get('tags', []) for word in words):
        print(item)

您不需要正则表达式。您可以使用json_data['tags'] 但如果您想使用正则表达式,则需要使用

import json
json.dumps(json_obj) #returns same object but type of string.

相关问题 更多 >

    热门问题