Python script for a specific selection
Here is the script which :


goes thorough vertices and find the highest 
select it and what is linked to it
separate it with separate(selected)


after applying the edge split modifier run this script :

import bpy

obj = bpy.context.object
bpy.ops.object.mode_set(mode = 'EDIT')
bpy.ops.mesh.select_all(action ='DESELECT')
max = -9999
for i in obj.data.vertices :
    if i.co[2] &gt; max :
        max_ind = i.index
        max  = i.co[2]
bpy.ops.object.mode_set(mode = 'OBJECT')
obj.data.vertices[max_ind].select = True
bpy.ops.object.mode_set(mode = 'EDIT')
bpy.ops.mesh.select_linked()
bpy.ops.mesh.separate(type='SELECTED')
bpy.ops.object.mode_set(mode = 'OBJECT')

#bpy.context.selected_objects[0].location[2] +=1