Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Python替换JSON文件中的单词_Python_Json - Fatal编程技术网

使用Python替换JSON文件中的单词

使用Python替换JSON文件中的单词,python,json,Python,Json,smpl.json文件: [ { "add":"dtlz", "emp_details":[ [ "Shubham", "ksing.shubh@gmail.com", "intern" ], [ "Gaurav", "gaurav.singh@cobol.in",

smpl.json文件:

[ 
   { 
      "add":"dtlz",
      "emp_details":[ 
         [ 
            "Shubham",
            "ksing.shubh@gmail.com",
            "intern"
         ],
         [ 
            "Gaurav",
            "gaurav.singh@cobol.in",
            "developer"
         ],
         [ 
            "Nikhil",
            "nikhil@geeksforgeeks.org",
            "Full Time"
         ]
      ]
   }
]
Python文件:

import json 
 with open('smpl.json', 'r') as file:
 json_data = json.load(file)
   for item in json_data["emp_details"]:
     if item[''] in ['Shubham']:
        item[''] = 'Indra'
 with open('zz_smpl.json', 'w') as file:
   json.dump(json_data, file, indent=4)
因为我的密码有问题。任何帮助都会很好


期待您的帮助。提前感谢

您的代码有两个问题

首先,JSON包含一个数组作为根。因此,您需要获取第一项的
emp\u详细信息
属性:

for item in json_data[0]["emp_details"]:
然后在
item
变量中,需要检查索引为零的项:

if item[0] in ['Shubham']:
以下是完整的工作代码:

import json 
with open('smpl.json', 'r') as file:
  json_data = json.load(file)
  for item in json_data[0]["emp_details"]:
    if item[0] in ['Shubham']:
      item[0] = 'Indra'
with open('zz_smpl.json', 'w') as file:
  json.dump(json_data, file, indent=4)

正在工作的repl.it链接:

您的代码有两个问题

首先,JSON包含一个数组作为根。因此,您需要获取第一项的
emp\u详细信息
属性:

for item in json_data[0]["emp_details"]:
然后在
item
变量中,需要检查索引为零的项:

if item[0] in ['Shubham']:
以下是完整的工作代码:

import json 
with open('smpl.json', 'r') as file:
  json_data = json.load(file)
  for item in json_data[0]["emp_details"]:
    if item[0] in ['Shubham']:
      item[0] = 'Indra'
with open('zz_smpl.json', 'w') as file:
  json.dump(json_data, file, indent=4)

工作repl.it链接:

这里有一个更通用的解决方案,最外层的json数组可以有多个条目(字典):


下面是一个更通用的解决方案,最外层的json数组可以有多个条目(字典):


首先,您需要了解列表/数组和映射数据结构,以及它们是如何用JSON表示的。说真的,为了使用JSON,您必须理解这些数据结构

空数组a1

a1 = []
带3个整数的数组

a2 = [1, 2, 3]
要解决第二个值

a2[0] is 1st value
a2[1] is 2nd value
在python中,将a2子集为第二和第三个值

a3 = a2[1:]
映射/dict是键:值对的容器。 和空映射(在python中称为dict)

2对映射

d2 = { 'name' : 'Chandra Gupta Maurya' , 'age' : 2360 }
d3 = { 'street' : 'ashoka' , 'location' : 'windsor place' , 'city' : 'delhi' }
这样的价值

d2['name'] is 'Chandra Gupta Maurya'
两张地图的数组。在python(和javaScript)中执行此操作时

您正在等效地这样做:

ad1 = [ 
        { 'name' : 'Chandra Gupta Maurya' , 'age' : 2360 } ,
        { 'street' : 'ashoka' , 'location' : 'windsor place' , 'city' : 'delhi' }
      ]
因此,
ad1[0]

{ 'name' : 'Chandra Gupta Maurya' , 'age' : 2360 } 
显然,“emp_details”位于数组的0位置

json_data[0]['emp_details']
json_数据[0]['emp_details']
本身就是映射数组的关键

>>> json.dumps (json_data[0]["emp_details"] , indent=2)
产生

'[\n  [\n    "Shubham",\n    "ksing.shubh@gmail.com",\n    "intern"\n  ],\n  [\n    "Gaurav",\n    "gaurav.singh@cobol.in",\n    "developer"\n  ],\n  [\n    "Nikhil",\n    "nikhil@geeksforgeeks.org",\n    "Full Time"\n  ]\n]'
[
  [
    "Shubham",
    "ksing.shubh@gmail.com",
    "intern"
  ],
  [
    "Gaurav",
    "gaurav.singh@cobol.in",
    "developer"
  ],
  [
    "Nikhil",
    "nikhil@geeksforgeeks.org",
    "Full Time"
  ]
]

产生

'[\n  [\n    "Shubham",\n    "ksing.shubh@gmail.com",\n    "intern"\n  ],\n  [\n    "Gaurav",\n    "gaurav.singh@cobol.in",\n    "developer"\n  ],\n  [\n    "Nikhil",\n    "nikhil@geeksforgeeks.org",\n    "Full Time"\n  ]\n]'
[
  [
    "Shubham",
    "ksing.shubh@gmail.com",
    "intern"
  ],
  [
    "Gaurav",
    "gaurav.singh@cobol.in",
    "developer"
  ],
  [
    "Nikhil",
    "nikhil@geeksforgeeks.org",
    "Full Time"
  ]
]
所以,

>>> json_data[0]["emp_details"][1]
['Gaurav', 'gaurav.singh@cobol.in', 'developer']
那么您可能希望进行替换

>>> json_data[0]["emp_details"][1][2] = 'the rain in maine falls plainly insane'
>>> json_data[0]["emp_details"][1][1] =  "I'm sure the lure in jaipur pours with furore"
>>> print ( json.dumps (json_data, indent=2) )
产生

[
  {
    "add": "dtlz",
    "emp_details": [
      [
        "Shubham",
        "ksing.shubh@gmail.com",
        "intern"
      ],
      [
        "Gaurav",
        "I'm sure the lure in jaipur pours with furore",
        "the rain in maine falls plainly insane"
      ],
      [
        "Nikhil",
        "nikhil@geeksforgeeks.org",
        "Full Time"
      ]
    ]
  }
]

首先,您需要了解列表/数组和映射数据结构,以及它们是如何用JSON表示的。说真的,为了使用JSON,您必须理解这些数据结构

空数组a1

a1 = []
带3个整数的数组

a2 = [1, 2, 3]
要解决第二个值

a2[0] is 1st value
a2[1] is 2nd value
在python中,将a2子集为第二和第三个值

a3 = a2[1:]
映射/dict是键:值对的容器。 和空映射(在python中称为dict)

2对映射

d2 = { 'name' : 'Chandra Gupta Maurya' , 'age' : 2360 }
d3 = { 'street' : 'ashoka' , 'location' : 'windsor place' , 'city' : 'delhi' }
这样的价值

d2['name'] is 'Chandra Gupta Maurya'
两张地图的数组。在python(和javaScript)中执行此操作时

您正在等效地这样做:

ad1 = [ 
        { 'name' : 'Chandra Gupta Maurya' , 'age' : 2360 } ,
        { 'street' : 'ashoka' , 'location' : 'windsor place' , 'city' : 'delhi' }
      ]
因此,
ad1[0]

{ 'name' : 'Chandra Gupta Maurya' , 'age' : 2360 } 
显然,“emp_details”位于数组的0位置

json_data[0]['emp_details']
json_数据[0]['emp_details']
本身就是映射数组的关键

>>> json.dumps (json_data[0]["emp_details"] , indent=2)
产生

'[\n  [\n    "Shubham",\n    "ksing.shubh@gmail.com",\n    "intern"\n  ],\n  [\n    "Gaurav",\n    "gaurav.singh@cobol.in",\n    "developer"\n  ],\n  [\n    "Nikhil",\n    "nikhil@geeksforgeeks.org",\n    "Full Time"\n  ]\n]'
[
  [
    "Shubham",
    "ksing.shubh@gmail.com",
    "intern"
  ],
  [
    "Gaurav",
    "gaurav.singh@cobol.in",
    "developer"
  ],
  [
    "Nikhil",
    "nikhil@geeksforgeeks.org",
    "Full Time"
  ]
]

产生

'[\n  [\n    "Shubham",\n    "ksing.shubh@gmail.com",\n    "intern"\n  ],\n  [\n    "Gaurav",\n    "gaurav.singh@cobol.in",\n    "developer"\n  ],\n  [\n    "Nikhil",\n    "nikhil@geeksforgeeks.org",\n    "Full Time"\n  ]\n]'
[
  [
    "Shubham",
    "ksing.shubh@gmail.com",
    "intern"
  ],
  [
    "Gaurav",
    "gaurav.singh@cobol.in",
    "developer"
  ],
  [
    "Nikhil",
    "nikhil@geeksforgeeks.org",
    "Full Time"
  ]
]
所以,

>>> json_data[0]["emp_details"][1]
['Gaurav', 'gaurav.singh@cobol.in', 'developer']
那么您可能希望进行替换

>>> json_data[0]["emp_details"][1][2] = 'the rain in maine falls plainly insane'
>>> json_data[0]["emp_details"][1][1] =  "I'm sure the lure in jaipur pours with furore"
>>> print ( json.dumps (json_data, indent=2) )
产生

[
  {
    "add": "dtlz",
    "emp_details": [
      [
        "Shubham",
        "ksing.shubh@gmail.com",
        "intern"
      ],
      [
        "Gaurav",
        "I'm sure the lure in jaipur pours with furore",
        "the rain in maine falls plainly insane"
      ],
      [
        "Nikhil",
        "nikhil@geeksforgeeks.org",
        "Full Time"
      ]
    ]
  }
]

你能用你的期望来编辑这篇文章吗?这对理解你的意图很有帮助。你能详细说明你遇到的麻烦吗?是否存在错误、错误结果等?我想搜索json文件数组中的某些单词,并用新单词替换这些单词。例如,搜索“il”并将其替换为“eel”。所以它看起来是这样的:[{“add”:“dtlz”,“emp_details”:[[“Shubham”,“ksing”。shubh@gmaeel.com“,“实习生”],[“高拉夫”,“高拉夫”。singh@cobol.in“,“开发者”],[“Nikheel”,"nikheel@geeksforgeeks.org“,“全职”]]}]你能按你的期望编辑这篇文章吗?这对理解你的意图非常有帮助。你能详细说明你遇到的麻烦吗?是否有错误、错误的结果等?我想搜索json文件数组中的某些单词,并用新单词替换这些单词。例如,搜索“il”并用“eel”替换所以它看起来是这样的:[{“add”:“dtlz”,“emp_details”:[[“Shubham”,“ksing”。shubh@gmaeel.com“,“实习生”],[“高拉夫”,“高拉夫”。singh@cobol.in“,“开发者”],[“Nikheel”,"nikheel@geeksforgeeks.org“,“全职”]]}]非常感谢!!!我可以再问一个问题吗?如何在整个文件中搜索某些单词,如“il”,然后将其更改为“eel”"? 有什么办法,我们能做到吗?我真的很抱歉,但我很想知道。你可以看看这些线程:,非常感谢!!!我能再问一个吗?如何在整个文件中搜索某些单词(如“il”)并将其更改为“eel”?有什么办法,我们能做到吗?我真的很抱歉,但我很想知道。你可以看看这些线程:,你能给我一些额外的建议来替换某些关键字(不是整个单词)?你能给我一些额外的建议来替换某些关键字(不是整个单词)?谢谢你的信息。你能给我一些关于替换数组中某些字母的建议吗?例如如何将所有数组的“il”替换为“eel”。这将是巨大的帮助!期待答案。谢谢你提供的信息。你能给我一些关于替换数组中某些字母的建议吗?例如如何将所有数组的“il”替换为“eel”。这将是巨大的帮助!期待答案。