Script that delete duplicated materials (from appending objects) and reassign the correct material
obj = bpy.context.active_object

for index in range(0, len(obj.material_slots.keys())):   

    obj.active_material_index = index

    if "." in obj.active_material.name:

        mat = obj.active_material.name[:-4]
        bpy.data.materials.remove(obj.active_material)
        obj.data.materials[index] = bpy.data.materials[mat] 


This work, I kind of cheated with the if "."