替换JSON模式

2024-04-26 02:24:35 发布

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

我的JSON文件如下:

{"A":[
{"Timestamp": "2017-11-14 14:39:54", "File": "E.kmp", "C":{....},
{"Timestamp": "2017-11-14 14:40:32", "File": "E.kmp", "L":{....},
{"Timestamp": "2017-11-14 14:41:32", "File": "E.kmp", "L":{....},
................................................................,
{"Timestamp": "2017-11-14 14:42:32", "File": "D.kmp", "L":{....},
{"Timestamp": "2017-11-14 14:43:32", "File": "D.kmp", "L":{....}
]

我想把所有的“文件”名改成“E.kmp”。这就是为什么我需要用“E.kmp”替换“D.kmp”。如果可以用python或R,请帮助我。Python更好。你知道吗


Tags: 文件jsontimestampfilekmp
3条回答

一个简单的解决方案是使用for循环遍历字典并替换值。你知道吗

json_val = {"A":[{"Timestamp": "2017-11-14 14:39:54", "File": "E.kmp"},
                 {"Timestamp": "2017-11-14 14:49:54", "File": "D.kmp"},
                 {"Timestamp": "2017-11-14 14:59:54", "File": "D.kmp"}
                ]}
for dic in json_val['A']:
    if dic['File'] != 'E.kmp':
        dic['File'] = 'E.kmp'
print json_val

如果键File的值不是E.kmp,则上面的代码段将替换列表中所有词典中该键的值。你知道吗

您不需要执行json.loads(json_val),因为python可以处理json。你知道吗

输出如下:

{'A': [{'Timestamp': '2017-11-14 14:39:54', 'File': 'E.kmp'}, 
       {'Timestamp': '2017-11-14 14:49:54', 'File': 'E.kmp'}, 
       {'Timestamp': '2017-11-14 14:49:54', 'File': 'E.kmp'}
      ]}

这里是R中的一种方法

library(jsonlite)
library(tidyverse)
res <- fromJSON(json_val) %>%
             map(mutate, File = 'E.kmp') %>%
             toJSON

prettify(res, indent=1)
# {
# "A": [
#  {
#   "Timestamp": "2017-11-14 14:39:54",
#   "File": "E.kmp"
#  },
#  {
#   "Timestamp": "2017-11-14 14:49:54",
#   "File": "E.kmp"
#  },
#  {
#   "Timestamp": "2017-11-14 14:59:54",
#   "File": "E.kmp"
#  }
# ]
#}

数据

json_val <- '{"A":[{"Timestamp": "2017-11-14 14:39:54", "File": "E.kmp"},
             {"Timestamp": "2017-11-14 14:49:54", "File": "D.kmp"},
             {"Timestamp": "2017-11-14 14:59:54", "File": "D.kmp"}
            ]}'

只要用E.kmp替换D.kmp

import json    
text = '''
{"A":[
{"Timestamp": "2017-11-14 14:39:54", "File": "E.kmp", "C":{....},
{"Timestamp": "2017-11-14 14:40:32", "File": "E.kmp", "L":{....},
{"Timestamp": "2017-11-14 14:41:32", "File": "E.kmp", "L":{....},
................................................................,
{"Timestamp": "2017-11-14 14:42:32", "File": "D.kmp", "L":{....},
{"Timestamp": "2017-11-14 14:43:32", "File": "D.kmp", "L":{....}
]
'''

json_data = json.loads(text)
for element in json_data["A"]:
      if element["File"] == "D.kmp":
          element["File"] = "E.kmp"

相关问题 更多 >