BPY, how to select and separate one side of a road-like mesh with Python script?
Bmesh version

Most edges in the middle of the road have 2 linked faces, and each edge vertex 4 linked edges. (as pointed out in other answer the non-non-manifold)

middle = [e for e in bm.edges if len(e.link_faces) == 2 
        and all(len(v.link_edges) == 4 for v in e.verts)]            

for e in bm.edges:
    e.select = e in middle


Which gives this result, the middle of the road selected without the ends.



Use middle edges to rip the mesh with bmesh.ops.split_edges. If there are any vertices left that have 5 link edges they are on the tip of the rip. 

The two rip edges in the verts link edges will also be in the ret['edges'] list returned by the operator. 

An edge vector is made from one of the rip edges. The edge to rip is chosen as the one with the smallest angle to rip edge vector. Could possibly use a mesh select operator here, feel I'm missing something as seems overly complicated

Here is a bmesh script to run in edit mode for testing.  After running the road mesh will be ripped down the centre line.

import bpy
import bmesh

context = bpy.context
ob = context.object
me = ob.data
bm = bmesh.from_edit_mesh(me)

middle = [e for e in bm.edges if len(e.link_faces) == 2 
        and all(len(v.link_edges) == 4 for v in e.verts)]

ret = bmesh.ops.split_edges(bm, edges=middle)
edges = set(ret["edges"])
ends = []
for v in bm.verts:
    if len(v.link_edges) == 5:
        link_edges = set(v.link_edges)
        cut = edges.intersection(v.link_edges)
        link_edges -= cut
        e = cut.pop()
        v = e.verts[1].co - e.verts[0].co
        def angle(edge):
            return v.angle(edge.verts[1].co - edge.verts[0].co)
        ends.append(sorted(list(link_edges), key=lambda e: angle(e))[0])
if ends:
    bmesh.ops.split_edges(bm, edges=ends)


Seeing this test script is for edit mode can now run

bpy.ops.mesh.separate(type='LOOSE')


To avoid any edit mode operators (so the script can be used on multi meshes in object mode) try the get_islands(...) method.