使用Python 3.8脚本更改json值

使用Python 3.8脚本更改json值,python,json,autokey,Python,Json,Autokey,我想用Python 3.8脚本更改一个json值 我知道在Python中,字符串是不可变的,所以不能在适当的位置更改它们的字符 这对我很有帮助: TypeError:“str”对象不支持项分配 TypeError:'str'对象不支持项目分配 项目['hotKey']=“” TypeError:“str”对象不支持项分配 脚本:item['hotKey']=“” 从pathlib导入路径 导入json home=str(Path.home()) path=home+“/.config/autok

我想用Python 3.8脚本更改一个json值

我知道在Python中,字符串是不可变的,所以不能在适当的位置更改它们的字符

这对我很有帮助:

TypeError:“str”对象不支持项分配
TypeError:'str'对象不支持项目分配
项目['hotKey']=“” TypeError:“str”对象不支持项分配

脚本:
item['hotKey']=“”
从pathlib导入路径
导入json
home=str(Path.home())
path=home+“/.config/autokey/data/Sample Scripts/”
jsonFilePath=home+“/.config/autokey/data/Sample Scripts/.run-run-lintalisahk-all.json”
将open(jsonFilePath)作为f:
data=json.load(f)
对于数据['hotkey']中的项:
项目['hotKey']=“”#项目['hotKey']。替换('home',项目['id'])
将open(jsonFilePath,'w')作为f:
json.dump(数据,f)
json文件

{
     "hotkey": {
         "hotKey": "<f12>"
     },
}
{
“热键”:{
“热键”:”
},
}

您需要在以下操作之前添加
json['hotkey']
引用:

for item in data['hotkey']:
    data['hotkey'][item] = "<f11>"  # item['hotKey'].replace('$home', item['id'])
数据['hotkey']中的项的
:
数据['hotkey'][item]=“”#item['hotkey']。替换('home',item['id'])
我的原始尝试:

import json
j = '''
{
     "hotkey": {
         "hotKey": "<f12>"
     }
}
'''
data = json.loads(j)
for x in data['hotkey']:
  data['hotkey'][x] = '<f11>'
print(data)
导入json
j='''
{
“热键”:{
“热键”:”
}
}
'''
data=json.loads(j)
对于数据[“热键”]中的x:
数据['hotkey'][x]=''
打印(数据)

您需要在以下操作之前添加
json['hotkey']
引用:

for item in data['hotkey']:
    data['hotkey'][item] = "<f11>"  # item['hotKey'].replace('$home', item['id'])
数据['hotkey']中的项的
:
数据['hotkey'][item]=“”#item['hotkey']。替换('home',item['id'])
我的原始尝试:

import json
j = '''
{
     "hotkey": {
         "hotKey": "<f12>"
     }
}
'''
data = json.loads(j)
for x in data['hotkey']:
  data['hotkey'][x] = '<f11>'
print(data)
导入json
j='''
{
“热键”:{
“热键”:”
}
}
'''
data=json.loads(j)
对于数据[“热键”]中的x:
数据['hotkey'][x]=''
打印(数据)

您只需要
数据[“热键”][“热键”]=”
,无需循环。您永远不会更改字符串。你可以指定一个新字符串,一个文字,或者以某种方式构建。我输入了一个错误。它应该是数据[“热键”][“热键”]=“顺便说一句,
变量依次是每个键(即字符串)。您只需要
数据[“热键”][“热键”]=”
,无需循环。您永远不会更改字符串。你可以指定一个新字符串,一个文字,或者以某种方式构建。我输入了一个错误。它应该是data[“hotkey”][“hotkey”]=“顺便说一句,你的
变量依次是每个键(即一个字符串)。这没关系,但(再次)我怀疑他是否真的想将所有热键更改为同一个键。向上投票假设这只是一个例子。两个代码段都将所有值更改为
不管键是什么。@quamrana我的解决方案只更改一个值,它的工作原理是:是的,没错,因为您使用了@progmatico的解决方案,而不是此答案中的循环代码。这是可以的,但是(再次)我怀疑他是否真的想将所有热键更改为同一个键。向上投票假设这只是一个例子。无论键是什么,这两个代码段都将所有值更改为
。@quamrana我的解决方案只更改一个值,它的工作原理是:是的,没错,因为您使用了@progmatico的解决方案,而不是这个答案中的循环代码。