使用 Python 到 Return JSON 条目接受来自 API 的用户输入

Accepting User Input Using Python To Return JSON entry from an API

import requests

url = 'http://jsonplaceholder.typicode.com/users'
response = requests.get(url)
users = response.json()

id_num = input("Please enter id number:")
user_name = input("Please enter username:")

for person in users:
    if person[id_num].title == person[user_name].title:
        try:
            print(person["name"])
        except AttributeError:
            print("Input doesn't match out records.")

结果:

C:\Users\username\PycharmProjects\foldername\venv\Scripts\python.exe C:/Users/username/PycharmProjects/foldername/foldername/main.py
    Please enter id number:1
    Please enter username:Bret
    Traceback (most recent call last):
      File "C:\Users\username\PycharmProjects\foldername\foldername\main.py", line 11, in <module>
        if person[id_num].title == person[user_name].title:
    KeyError: '1'
    
    Process finished with exit code 1

因此,我试图要求用户向 return API 文件的 JSON 文件的名称条目提供请求的输入。我试过切换变量,因为它说的是 KeyError Bret。然后我添加了 .title 来处理用户输入请求信息时的错误。然后我添加了我必须在那里的 try/except 。仍然是第一个接受输入的 KeyError。

我正在使用安装了请求的最新 pycharm。从我正在工作的演示中我不应该导入任何其他东西,代码在它只是

时确实有效
for person in users:
    print(person["name"])

当然 return 是 API 中 JSON 文件中的所有名称。我需要接受用户输入和 return 的名称,我知道我错过了一些不知道是什么的东西。这只是我与 python 的第三个项目。我已经完成了 csv、xml 和字典迭代。

我相信这会给你想要的答案:

for person in users:
    if(person["id"]==int(id_num)):
        person_username = person["username"]
        if(person_username == user_name):
            print(person["name"])

基本上,这个问题出现在这段代码中:person[id_num].title

比如说,你的 id_name = 1。现在,你在这里试图做的是从 person 字典中获取键的值,其中键 = 1。因为这不是一个有效的键存在于 person 字典中,导致 KeyError。

现在,在上面给出的代码中,我们首先检查的是此人的 id 值是否等于 id_num 输入。如果这是真的,那么我们正在获取具有 id = id_num 值的人的用户名值。之后,我们检查提取的用户名值是否等于提供的用户名输入!