我正在尝试在python中创建一个程序,它将从文件中预先选择列表并将它们转换为变量。
我目前的代码是
datain = open("test.json", "r") #open file storing questions and awnsers
datause = datain.readlines() #get data loaded for use
后面跟着
for i in range(0, numquest):
x = []
print("Question " + str(( i + 1 )))
x = datause[i]
print(x[1])
awns = input(x[2])
返回
"
W
我正在阅读的文件内容是
["What type of device is a mouse? : ", "1) Input 2) Storage 3) Output :", "1", "1) Input"]
我想加载为列表/数组
["What type of device is a mouse? : ", "1) Input 2) Storage 3) Output :", "1", "1) Input"]
["What type of storage is a hard drive? : ", "1) Optical 2) Magnetic 3) Read-Only : ", "2", "2) Magnetic"]
["How is eight(8) represented in binary? : ", "1) 1111 2) 1001 3) 1000 : ", "3", "3) 1000"]
是我目前用于在test.json文件中进行测试的示例问题
答案 0 :(得分:2)
对于JSON文件,您可以使用json.load
:
import json
with open("test.json", "r") as datain:
datause = json.load(datain)
此时datause
是一个包含JSON文件中的内容的数组。
有关the Python docs中json
库的更多信息。
答案 1 :(得分:0)
当你执行print(x[1])
时,它只打印索引1处的字符,我认为这不是你想要的。
如果您想要的是首先打印列表的第一个元素,然后在input(x[2])
中打印列表的第二个元素。
像myershustinc所说,使用json.load()
将数据加载到datause对象中,然后遍历datause中的每个列表,然后为它打印第一个和第二个元素。
示例 -
for l in datause:
for i in range(0, numquest):
print("Question " + str(( i + 1 )))
print(l[0])
awns = input(l[1])
我认为你不需要x
。另请注意,python的0
已编入索引,0 -> index of first element
。
此外,似乎您的json文件已损坏,请尝试使用此内容 -
[["What type of device is a mouse? : ", "1) Input 2) Storage 3) Output :", "1", "1) Input"],
["What type of storage is a hard drive? : ", "1) Optical 2) Magnetic 3) Read-Only : ", "2", "2) Magnetic"],
["How is eight(8) represented in binary? : ", "1) 1111 2) 1001 3) 1000 : ", "3", "3) 1000"]]