我有一个带有对象的json文件和一个包含多个组的文本文件(每个组有5个数字,我以这种方式将它们放在列表中:每个组的第一个数字在列表1中,每个组的第二个数字,在列表2等)。我基本上必须将json的每个对象与我创建的每个组匹配。问题是我得到了Json的最后一个元素。文本文件中的组以正确的方式创建。
这是我的代码:
import json
NUM_LIST = 5
index = 0
def report(a, b, c, d, e, index):
json_file = 'json_global.json'
json_data = open(json_file)
data = json.load(json_data)
i = 0
index = 0
item = 0
cmd = " "
ind = 0
for node in data:
for i in range(0, 5):
item = data[i]['item']
cmd = data[i]['command']
index+= 1
print item, cmd, a, b, c, d, e
f = open("Output.txt", "r")
lines = [line.rstrip() for line in f if line != "\n"]
NUM_LISTS = 5
groups = [[] for i in range(NUM_LISTS)]
listIndex = 0
for line in lines:
if "Transactions/Sec for Group" not in line:
groups[listIndex].append(float(line))
listIndex += 1
if listIndex == NUM_LISTS:
listIndex = 0
value0 = groups[0]
value1 = groups[1]
value2 = groups[2]
value3 = groups[3]
value4 = groups[4]
for i in range(0, 5):
a = value0[i]
b = value1[i]
c = value2[i]
d = value3[i]
e = value4[i]
i += 1
report(a, b, c, d, e, index)
Json文件如下所示:
[
{
"item": 1,
"command": "AA"
},
{
"item": 2,
"command": "BB",
},
{
"item": 3,
"command": "CC",
},
{
"item": 4,
"command": "DD",
},
{
"item": 5,
"command": "EE",
}
]
文本文件如下所示:
Transactions/Sec for Group = AA\CODE1\KK
1011.5032
2444.8864
2646.6893
2740.8531
2683.8178
Transactions/Sec for Group = BB\CODE1\KK
993.2360
2652.8784
3020.2740
2956.5260
3015.5910
Transactions/Sec for Group = CC\CODE1\KK
1179.5766
3271.5700
4588.2059
4174.6358
4452.6785
Transactions/Sec for Group = DD\CODE1\KK
1112.2567
3147.1466
4014.8404
3913.3806
3939.0626
Transactions/Sec for Group = EE\CODE1\KK
1205.8499
3364.8987
4401.1702
4747.4354
4765.7614
程序正文中的逻辑运行正常。组显示正常,但是不是从Json文件中获得1到5的列表,而是使用数字5命令EE显示所有内容。相反应该出现:项目1,2,3,4,5及其命令
我的清单1将包含数字:1011.5032,993.2360,1179.5766,1112.2567,1205.8499。 我的清单2将有数字:2444.8864,2652.8784,3271.5700,3147.1466, 我使用的python版本是2.6
答案 0 :(得分:0)
根据你的解释,你很难说你要做什么 - 你的意思是下面的嵌套循环吗?内部循环执行5次,但在每次迭代中,它都会覆盖item
和cmd
的先前值。
for node in data:
for i in range(0, 5):
item = data[i]['item']
cmd = data[i]['command']
index+= 1
每次执行内循环时尝试打印值:
for node in data:
for i in range(0, 5):
item = data[i]['item']
cmd = data[i]['command']
print item, cmd
index+= 1
答案 1 :(得分:0)
我认为这段代码是你的问题:
for node in data:
for i in range(0, 5):
item = data[i]['item']
cmd = data[i]['command']
项目将始终为“5”,执行后命令将始终为“EE”。也许你的缩进是关闭它下面的代码,并且该代码应该在循环内?