Python读取文本文件并加载预制数组/列表

时间:2015-06-30 17:36:56

标签: python python-3.x

我正在尝试在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文件中进行测试的示例问题

2 个答案:

答案 0 :(得分:2)

对于JSON文件,您可以使用json.load

import json
with open("test.json", "r") as datain:
    datause = json.load(datain)

此时datause是一个包含JSON文件中的内容的数组。

有关the Python docsjson库的更多信息。

答案 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"]]