2016-09-07 51 views
0

我有一個登錄名和整數估值師(部分結果)一個JSON文件,如:解析JSON查找值並追加隨機數?

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

我需要接受用戶登錄(名稱),在JSON發現插入的名字。如果它已經存在,則在「結果」中添加一些數字。

例如:如果我輸入「泰德」,一些數字將被附加到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') 
+1

是否所有名稱都是唯一的?什麼是'some_number'? –

+1

那麼你的問題是什麼?你知道你想要什麼,現在是時候開始竊取一些代碼;) 在python中使用'json'庫,這當然是可能的,而且實際上很簡單。 – Dartmouth

+1

你有沒有試圖自己做這個?告訴我們你的代碼 – depperm

回答

0

您可以parse your json這樣

import json 

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

而現在它與data合作,以找到任何你需要的問題。例如,要訪問你可以做

data[0]['name'] 

名字其餘的取決於在那裏/你如何儲存姓名和檢查它們是否已經存在。

最後,添加新的價值,你可以使用append

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