簡體   English   中英

python從dict中的json數據中替換多個鍵

[英]python replace more than one key from json data in dict

是否有可能從json文件中替換字典中的多個鍵。 我將嘗試用簡單的示例來解釋我的問題:我有一個像這樣的json文件:

   "a1": {
      "option": "2",
      "suboption": "2",
      "option": "2",
      "suboption_device": "3",
      "option": "1",
      "suboption_ip": "1",
      "option": "1",
      "suboption_ip": "2"
    }

我的拳頭測試如下所示:

def replace_option(match):
    global o
    o += 1
    return 'option%o' % o

def replace_suboption(match):
    global s
    s += 1
    return 'suboption%s' % s

def preProcessing():
    with open('test.json') as f:    
        data = f.read()
    replace1 = json.loads(re.sub("option", replace_option, data))
    replace2 = json.loads(re.sub("suboption", replace_suboption, data))

所以在replace1全部消失suboption_ipreplace2所有option只有一個除外。

嗯...也許可以用一種方法執行替換過程? annybody有個主意嗎?

感謝您的幫助:)

編輯:

replace1輸出:

"a1": {
  "option1": "2",
  "suboption": "2",
  "option2": "2",
  "suboption_device": "3",
  "option3": "1",
  "suboption_ip": "1",
  "option4": "1",
}

replace2輸出:

"a1": {
  "option": "2",
  "suboption1": "2",
  "suboption2_device": "3",
  "suboption3_ip": "1",
  "suboption4_ip": "2"
}

容易:

with open(INFILE, "rt") as f:    
    with open(OUTFILE_BLOCK, "wt") as o:
        for line in f:
            i += 1
            o.write(line.replace("pn_dcp.block", "pn_dcp.block%i" %i))
i = 0
with open(OUTFILE_BLOCK, "rt") as f:    
    with open(OUTFILE_OPTION, "wt") as o:
        for line in f:
            i += 1
            o.write(line.replace("pn_dcp.option", "pn_dcp.option%i" %i))
i = 0
with open(OUTFILE_OPTION, "rt") as f:    
    with open(OUTFILE_FINAL, "wt") as o:
        for line in f:
            i += 1
            o.write(line.replace("pn_dcp.suboption", "pn_dcp.suboption%i" %i))
i = z

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM