解析JSON查找值并附加随机数?

时间:2016-09-07 15:24:31

标签: python json input

我有一个带登录和整数值的JSON文件(某些结果),如下所示:

[
        {
           "name":"Tamara",
           "results":"434.545.234.664"
        },
        {
           "name":"Ted",
           "results":"434.545.234.664"
        }
]

我需要接收用户登录名(name),在JSON中查找插入的名称。如果它已存在,请在“结果”中添加一些数字。

例如:如果我输入“Ted”,某些数字将附加到Ted的结果中:"results":"434.545.234.664+4343}"

如果名称不存在,请使用以下内容添加新记录:

{
    "name":"new_name",
    "results":"some_number"
}

在其中。

我的代码无效:

with open('/Users/users_db.json') as jsonfile:
    user_name = ''
    while user_name == '':
        data = json.load(jsonfile)
        user_name = input('Your name: ')
        for user in data:
            if user_name in user['name']:
                print('Old user')
                break
            else:
                print('New user')

2 个答案:

答案 0 :(得分:1)

以下是编码问题的众多可能方法之一:

import json
import random
import names

random.seed(1)

data = [
    {
        "name": "Tamara",
        "results": "434.545.234.664"
    },
    {
        "name": "Ted",
        "results": "434.545.234.664"
    }
]


def foo(lst, name):
    some_number = random.randint(0, 4343)
    values = filter(lambda d: d["name"] == name, lst)

    if values:
        for v in values:
            v["results"] += "+{0}".format(some_number)
    else:
        lst.append({
            "name": name,
            "results": some_number
        })

for name in ["Tamara", "Ted"] + [names.get_first_name() for i in range(8)]:
    foo(data, name)

print(data)

这个将使用names模块生成随机测试名称。

一个建议虽然需要一些时间来阅读帮助页面,尤其是名为"What topics can I ask about here?""What types of questions should I avoid asking?"的部分。更重要的是,请阅读the Stack Overflow question checklist。您可能还想了解Minimal, Complete, and Verifiable Examples

答案 1 :(得分:0)

你可以parse your json喜欢这个

import json

with open('yourJsonFile.json') as example_data:
    data = json.load(example_data)

现在,与data合作,找到你需要的东西。例如,要访问您可以执行的名字

data[0]['name']

其余的取决于您存储名称的位置和方式,并检查它们是否已存在。

最后,要添加新值,您可以使用append