如何json解析python输出并将其值存储在dict或变量中?

2024-05-23 17:51:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个输出json的python代码

import json 
from faker import Faker
import random
from random import randint
import subprocess
fake = Faker('en_US')

for _ in range(1):
sms =  {
        "name": fake.name(),
        "email": fake.email(),          
        "location": "usa"
        }

with open('abc.json', 'w') as outfile:
    json.dump(sms, outfile)

print(sms)

子流程:

^{pr2}$

我得到的输出:

(b'{\n  "name": "elmoroy",\n  "email":"ssbyt@gmail.com"}\n', None)

我需要的输出:

{
"name": "elmoroy",
"email":"ssbyt@gmail.com
}

如果我调用output["name"],它应该返回elmoroy。在


Tags: 代码namefromimportcomjsonemailrandom
2条回答

也许您应该尝试使用json.load,如下所示:

with open('abc.json') as in_file:
    obj = json.load(in_file)
print(obj)

请参阅json — JSON encoder and decoder中的“解码JSON”:

-编辑-

试试这个:

首先,您会得到一个文件,如:

^{pr2}$

然后,您将得到另一个文件,如:

import json

with open('abc.json') as in_file:
    sms = json.load(in_file)
print(sms)

执行第一个文件,然后执行第二个文件,您可以看到第二个文件将文件内容解析为一个json对象。在

communicate()返回一个元组(stdout\u data,stderr\u data),您需要的输出在output[0]中,它是所需字典的字符串表示形式,然后可以使用my_dict = json.loads(output[0])来获取字典。在

更新:在循环中运行这个

my_dict = {}
for i in range(20):
    x=subprocess.Popen([" python"," first.py"],shell=True, stdout=subprocess.PIPE)
    output = x.communicate()
    my_dict.update({i: json.loads(output[0])})

my_dict将包含打印的sms变量的20个字典

相关问题 更多 >