Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用变量读取json?_Python_Json - Fatal编程技术网

Python 使用变量读取json?

Python 使用变量读取json?,python,json,Python,Json,我正试图让我的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"] 但是,当我运行bot时,它会出现所有“keyrerror”,并且在

我正试图让我的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"]
但是,当我运行bot时,它会出现所有“keyrerror”,并且在通过将
url[random][“url”]
替换为
url[“5”][“url”]
进行检查后,它正确地向我发送了对应于5的url 我不确定这样做是不可能的,还是我必须使用某种特殊格式:

这是我的问题,我真的不知道如何正确表达,因为我不知道术语,所以:

当要求我的机器人读取json时,有没有一种简单的方法可以使用这个“随机”变量

我宁愿使用这种格式,因为这是我理解和习惯的东西,但如果不可能,我不介意尝试其他东西

如果您想知道json看起来如何,它有点像:

{
"max": {"max":139},
"1": {stuff here},
"2": {stuff here},
"3": {stuff here},
"4": {stuff here},
"etc"...
}

问题是,
random.randint
返回一个整数,而您正在访问的字典具有字符串键。您可以通过在访问字典时围绕随机变量包装
str
来解决此问题:

url = data[str(random)]["url"]

问题是,
random.randint
返回一个整数,而您正在访问的字典具有字符串键。您可以通过在访问字典时围绕随机变量包装
str
来解决此问题:

url = data[str(random)]["url"]

您可以使用json文件中的字符串作为键。尝试:

url = data[str(random)]["url"]

您可以使用json文件中的字符串作为键。尝试:

url = data[str(random)]["url"]

random.randint
返回一个整数(顾名思义)。您需要将其转换为字符串。也不要将其称为“随机”,它会踩在模块的名称上
rdm=str(random.randint(1,max))
。编辑:也不要将
max
用作变量名-它将覆盖
\uuuu内置\uuuuu.max
random.randint
返回一个整数(顾名思义)。您需要将其转换为字符串。也不要将其称为“随机”,它会踩在模块的名称上
rdm=str(random.randint(1,max))
。编辑:也不要使用
max
作为变量名-它将覆盖
\uuuu builtin\uuuu.max
。正如@pault在他的评论中提到的,不要将变量命名为与模块相同的名称,以防止将来的代码失败。值得注意的是,JSON不会接受INT作为键。它们会自动转换为字符串。正如@pault在他的评论中提到的,不要将变量命名为模块,以防止将来的代码失败。值得注意的是,JSON不会接受int作为键。它们会自动转换为字符串。以前被咬过:)