我有一个场景,其中我正在运行生成文本文件(demo.txt)数据的命令,如下所示:
{
"id" : "aaaaaaaabhikz75nc3wkao54xhuv245ye6zmjhcecralymbjo3hhvh5qtugq",
"name" : "zsssd",
"description" : "testfiler",
"ticket" : null,
"cId" : "yu2tiwguc45t6t5ej25pfzpevfhpcbbjjxjjvw6wa",
"createdBy" : null,
"timeCreated" : null
}{
"id" : "aaaaaaaabhikz75nc3wkao54xhuv245ye",
"name" : "klsssd",
"description" : "testfiler2",
"ticket" : null,
"cId" : "yu2tiwguc456wa",
"createdBy" : null,
"timeCreated" : 107635378859
}
我想将其转换为json,提取有关名称的信息,并在每个循环中运行时向其追加flp
(请参阅下面的代码)值,并将其存储在dict中
下面是我尝试过的
flp = ["modeltf","modeltz"]
for r in flp:
res = subprocess.call(['java', '-jar','dem.jar', 'dataname', '-o', 'demo.txt', '-f', r])
with open('demo.txt') as in, with open('demo.json','w') as out:
json_string = json.dumps(in, default=lambda o: o.__dict__, sort_keys=True, indent=2)
这并没有像预期的那样起作用,任何线索都会很好
所需结果:[{"name" : "zsssd", "flp" : "modeltf"}, {"name" : "klsssd", "flp" : "modeltz"}]
第一个循环为modeltf
运行,下一个循环为modeltz
运行
谢谢
编辑
flp = ["modeltf","modeltz"]
for r in flp:
res = subprocess.call(['java', '-jar','dem.jar', 'dataname', '-o', 'demo.txt', '-f', r])
with open("namespaces.txt") as f:
demo = f.read().replace("\n","")
records = re.findall(r"\{[^\}]*\}", demo)
dictionaries = [json.loads(r) for r in records] # this creates the dictonary out of the demo.txt file.
现在,我尝试从列表字典中获取名称,并尝试将其与flp项映射以获得此结果。
[{"name" : "zsssd", "flp" : "modeltf"}, {"name" : "klsssd", "flp" : "modeltz"}]
使用:
results = [{"name": name, "flp": flp} for name,flp in zip(names, flp)]
但它不会循环遍历完整的数据,只输出第一个dict项
相关问题 更多 >
编程相关推荐