我正在尝试创建JSON文件。使用json.dumps并成功打印。 我有一个问题。
我想要的格式是
channel_info = OrderedDict()
table = OrderedDict()
table2 = OrderedDict()
channel_info["KIND1"] = pkind[2].text
table[ptime[10].text] = pnk[11].text
table[ptime[11].text] = pnk[12].text
channel_info["TABLE1"] = table
channel_info["KIND2"] = pkind[2].text
table2[ptime[10].text] = pnk[11].text
table2[ptime[11].text] = pnk[12].text
channel_info["TABLE2"] = table2
结果:
{
"KIND1": "xxxx",
"TABLE1": {
"09:10": "aaaa",
"10:10": "bbbb"
},
"KIND2": "yyyy",
"TABLE2": {
"09:10": "cccc",
"10:10": "dddd"
}
}
如何使用while循环输出相同的格式? JSON对象的名称? KIND1,TABLE1,KIND2,TABLE2等...... 我想知道如何使用while循环动态更改这些名称。 谢谢。
答案 0 :(得分:0)
你可以这样做(假设table
字典在每个循环中都是静态的,就像你给出的例子中所示):
channel_info = dict()
# n_tables is the number of iterations you need
for i in range(n_tables):
table = dict()
channel_info["KIND%s" % (i+1)] = pkind[1].text
table[ptime[10].text] = pnk[11].text
table[ptime[11].text] = pnk[12].text
channel_info["TABLE%s" % (i+1)] = table
您不需要动态表名,因为您将其分配给字典键。
答案 1 :(得分:0)
基本上,如果我理解你的问题:
...
i=0
no_of_tables = 4
while i<=no_of_tables:
table_counter = i+1
table_counter = str(table_counter)
kind = 'KIND' + table_counter
table = 'TABLE' + table_counter
channel_info[kind] = pkind[2].text
table[ptime[10].text] = pnk[11].text
table[ptime[11].text] = pnk[12].text
channel_info[table] = table
注意:我知道它可以进行优化,但为了简单起见,我将其保留原样。