我正试图让我的Python机器人使用我已经定义(随机)的变量,以读取JSON文件并向我发送与给定变量对应的URL。
with open('data.json', 'r') as json_data:
data = json.load(json_data)
max = data["max"]["max"]
random = random.randint(1, max)
url = data[random]["url"]
但是当我运行漫游器时,它会显示所有“ KeyError”,并且在通过将url[random]["url"]
替换为url["5"]["url"]
进行检查之后,它正确地向我发送了对应于5的网址
我不确定是否无法通过这种方式执行我要执行的操作,或者是否必须使用某种特殊格式:
这是我的问题,由于我不了解术语,所以我真的不知道该如何正确表达:
当要求我的机器人从json读取内容时,是否有一种简单的方法可以使用此“随机”变量?
我宁愿使用这种格式,因为这是我理解并习惯的格式,但是如果不可能的话,我不介意尝试其他方法
如果您想知道json看起来如何:
{
"max": {"max":139},
"1": {stuff here},
"2": {stuff here},
"3": {stuff here},
"4": {stuff here},
"etc"...
}
答案 0 :(得分:3)
问题在于random.randint
返回一个整数,而您正在访问的字典具有字符串键。您可以通过在访问字典时将str
包裹在随机变量周围来解决此问题:
url = data[str(random)]["url"]
答案 1 :(得分:1)
您的json文件具有字符串作为键。试试:
url = data[str(random)]["url"]