importreimportjson
str='''
var oui = [{
"pfx": "000000",
"mask": 24,
"desc": "00:00:00 Officially Xerox, but 0:0:0:0:0:0 is more common"
},{
"pfx": "000001",
"mask": 24,
"desc": "Xerox Xerox Corporation"
},{
"pfx": "000002",
"mask": 24,
"desc": "Xerox Xerox Corporation"
},{
"pfx": "000003",
"mask": 24,
"desc": "Xerox Xerox Corporation"
},{
"pfx": "000004",
"mask": 24,
"desc": "Xerox Xerox Corporation"
},{
"pfx": "000004",
"mask": 24,
"desc": "Let's pretendthisisa repeat"
}];
'''
def dedupe(match):
jsonStr = match.group()
list = json.loads(jsonStr)
seenPfxs = set()
def notDupe(obj):
thisPfx = obj['pfx']
if thisPfx in seenPfxs:
return False
seenPfxs.add(thisPfx)
return True
return json.dumps([obj for obj in list if notDupe(obj)])
dedupedStr = re.sub(r'(?s)\[[^\]]+\](?=;)', dedupe, str)
print(dedupedStr)