我到现在在python以下的正则表达式:如何清空键在字典中与分字典
(\"[^"]+":\s)({}|\[\]|null)(,?\s?)
我需要匹配“的一些关键”的所有实例:[]或{}或从字符串空,但我需要排除的情况下,“一些关键”是“注意”的情况下,字符串是:
test= {'merda 1': {},
'merda 2': [1,2,3],
1: """"só pra fude""",
'Note': "foda-se",
'Não reclama': [],
'Tédio da nisso': OrderedDict({'Note': None, 1:2}),
'None':None,
'Quero $$$':(),
'Note': [],
12.2: None,
666: OrderedDict(),
'Fudeu': OrderedDict({1:None, 2:1, 3:2})
}
string_json = json.dumps(test)
的目的是过滤字典的空叶子,但我需要请保留OrderedDicts。
解决方案:基于在马丁回答 :
def clean_dict(dictobj):
""" Clean any number of empty leafs of a dictionary
"""
def del_empty_value(dictobj):
""" Delete empty values recursively
"""
for key, value in dictobj.items():
if not (value or key == 'Note'):
del dictobj[key]
elif isinstance(value, dict):
del_empty_value(value)
from json import dumps
initial_hash = len(dumps(dictobj))
while True:
del_empty_value(dictobj)
new_hash = len(dumps(dictobj))
if new_hash == initial_hash:
break
initial_hash = new_hash
你的意思是一些文本“的_occurrences‘’_” ?你想在示例字符串中匹配什么? –
当你用正则表达式匹配时,你想要移除它或保留它?这部分我不清楚。 –
马丁,我想删除它。编辑清楚 – canesin