如何用Python和正则表达式替换字典中的键字符串?
如何用Python替换使用正则表达式从中提取数据的键字符串,例如:如何用Python和正则表达式替换字典中的键字符串?,python,regex,Python,Regex,如何用Python替换使用正则表达式从中提取数据的键字符串,例如: {"root['toto']": {'new_value': 'abcdef', 'old_value': 'ghijk'}} 我想用更容易阅读的东西来替换root['toto'],比如toto,我的对象可能有几个这样的键,我想在root['']中提取,如果你的键都有类型“root[*]”,你可以使用: newkey = oldkey.replace("['"," ").replace("']","").split()[1]
{"root['toto']": {'new_value': 'abcdef', 'old_value': 'ghijk'}}
我想用更容易阅读的东西来替换
root['toto']
,比如toto
,我的对象可能有几个这样的键,我想在root['']
中提取,如果你的键都有类型“root[*]”,你可以使用:
newkey = oldkey.replace("['"," ").replace("']","").split()[1]
如果您的密钥都具有“root[*]”类型,则可以使用:
newkey = oldkey.replace("['"," ").replace("']","").split()[1]
其中d是字典对象
示例
d={"root['abc']":2,'3':4}
d={ k[6:-2] if k[:6]=="root['" else k :v for k,v in d.items() }
print(d)
输出
{'abc': 2, '3': 4}
{'abc': 2, '3': 4}
解释
d={"root['abc']":2,'3':4} #d is our old dict
nd={} #nd is new dict
for k,v in d.items(): #iterating over each key,value k,v
nk= k[6:-2] if k[:6]=="root['" else k #nk is our new key
nd[nk]=v #setting nk:v in nd
print(nd) #print final dict
我们使用字典理解来创建新的字典
打破界限:-
{ #Start dictionary construction
k[6:-2] if k[:6]=="root['" else k # this is our new key
: # key value separator
v #Keep the same value as the old one.
for k,v in d.items() #Do this for all key,values in my old dictionary.
} #End dictionary construction
不使用听写理解
d={"root['abc']":2,'3':4} #d is our old dict
nd={} #nd is new dict
for k,v in d.items(): #iterating over each key,value k,v
nk= k[6:-2] if k[:6]=="root['" else k #nk is our new key
nd[nk]=v #setting nk:v in nd
print(nd) #print final dict
输出
{'abc': 2, '3': 4}
{'abc': 2, '3': 4}
其中d是字典对象
示例
d={"root['abc']":2,'3':4}
d={ k[6:-2] if k[:6]=="root['" else k :v for k,v in d.items() }
print(d)
输出
{'abc': 2, '3': 4}
{'abc': 2, '3': 4}
解释
d={"root['abc']":2,'3':4} #d is our old dict
nd={} #nd is new dict
for k,v in d.items(): #iterating over each key,value k,v
nk= k[6:-2] if k[:6]=="root['" else k #nk is our new key
nd[nk]=v #setting nk:v in nd
print(nd) #print final dict
我们使用字典理解来创建新的字典
打破界限:-
{ #Start dictionary construction
k[6:-2] if k[:6]=="root['" else k # this is our new key
: # key value separator
v #Keep the same value as the old one.
for k,v in d.items() #Do this for all key,values in my old dictionary.
} #End dictionary construction
不使用听写理解
d={"root['abc']":2,'3':4} #d is our old dict
nd={} #nd is new dict
for k,v in d.items(): #iterating over each key,value k,v
nk= k[6:-2] if k[:6]=="root['" else k #nk is our new key
nd[nk]=v #setting nk:v in nd
print(nd) #print final dict
输出
{'abc': 2, '3': 4}
{'abc': 2, '3': 4}
可以使用以下正则表达式:
mydict = {
"root['toto']": {'new_value': 'abcdef', 'old_value': 'ghijk'},
"test['aaa']": {'new_value': 'abcdef', 'old_value': 'ghijk'},
"root['bb']": {'new_value': 'abcdef', 'old_value': 'ghijk'},
"ccc": {'new_value': 'abcdef', 'old_value': 'ghijk'}
}
for key, value in mydict.items():
new_key = re.sub(r"(\w+\[')(\w+)('\])", r"\2", key)
if new_key != key:
mydict[new_key] = mydict.pop(key) # Remove the old entry and add the entry back with new key
print mydict
为您提供更新的mydict
,其中包含:
{'aaa': {'new_value': 'abcdef', 'old_value': 'ghijk'},
'bb': {'new_value': 'abcdef', 'old_value': 'ghijk'},
'toto': {'new_value': 'abcdef', 'old_value': 'ghijk'},
'ccc': {'new_value': 'abcdef', 'old_value': 'ghijk'}}
可以使用以下正则表达式:
mydict = {
"root['toto']": {'new_value': 'abcdef', 'old_value': 'ghijk'},
"test['aaa']": {'new_value': 'abcdef', 'old_value': 'ghijk'},
"root['bb']": {'new_value': 'abcdef', 'old_value': 'ghijk'},
"ccc": {'new_value': 'abcdef', 'old_value': 'ghijk'}
}
for key, value in mydict.items():
new_key = re.sub(r"(\w+\[')(\w+)('\])", r"\2", key)
if new_key != key:
mydict[new_key] = mydict.pop(key) # Remove the old entry and add the entry back with new key
print mydict
为您提供更新的mydict
,其中包含:
{'aaa': {'new_value': 'abcdef', 'old_value': 'ghijk'},
'bb': {'new_value': 'abcdef', 'old_value': 'ghijk'},
'toto': {'new_value': 'abcdef', 'old_value': 'ghijk'},
'ccc': {'new_value': 'abcdef', 'old_value': 'ghijk'}}
这不是JSON,而是一本字典。我正在删除tag.copy到一个新的dict
{k[6:-2]如果k[:6]==“root['”否则k:v代表k,v在d.items()中
其中d
是您的旧dictionary@bulbus读起来有点复杂,但应该作为一个答案来解释。这不是JSON,这是一个字典。我正在删除标记。复制到一个新的dict{k[6:-2]如果k[:6]==“root['”else k:v代表k,v代表d.items()}
其中d
是您的旧dictionary@bulbus阅读起来有点复杂,但应该作为解释的答案发布。或者干脆oldkey.replace(“root[”,“”)。replace(“”),“”)
@Phướ碳氢化合物ữu Lưu工作非常好,简单,高效,我喜欢这种注释;@Rawing还需要替换(“']”,“”)
或者只oldkey.replace(“根[”,“”)。替换(“']”,“”)
@Phướ碳氢化合物ữu Lưu工作很好,简单,高效,我喜欢这种注释;@Rawing还需要替换(“]”,“”)
这正是我要找的解决方案;)这正是我要找的解决方案;)