我到現在在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