Python 2.8 - deleting .001, .002, etc
Finding with re

Alternatively, find all objects that match a pattern using active objects name.  With object "Cube" active a simple re could be

regexp = r'Cube.\d+'


any object with a name starting with "Cube." and ending only with digits past that point will match.  Need only iterate over scene.objects, or any collection containing objects eg all in blend  bpy.data.objects, and see if they match, as opposed to finding if any of each of a  1000 exist. 

There are other ways without re, eg split or rpartition on "." and test if part is numeric.

&gt;&gt;&gt; "Cube.001".rpartition(".")
('Cube', '.', '001')


Test script finds the matches.  

import bpy
import re

context = bpy.context
scene = context.scene
ob = context.object

rexp = f"{ob.name}.\d+"

matches = [o for o in scene.objects if re.fullmatch(rexp, o.name)]

print(matches)


Ok if we have matches, can iterate and delete from blend.

while matches:
    bpy.data.objects.remove(matches.pop())


Or with the operator, passing a context override.

if matches:
    bpy.ops.object.delete({"selected_objects" : matches})


There is a lot of over zealous hoo-ha re not using operators.  If you had 1000s of matches above, the operator is still called only once... IMO this is Ok.

but Don't!!!! do this

for o in matches:
    bpy.ops.some.op(....)


and call the operator 1000s of times.

Python performance with Blender operators

Why avoid bpy.ops?

Please also note that bpy.ops.object.select_pattern(...) has similar functionality, and this could be a 2 liner.

bpy.ops.object.select_pattern(pattern="Cube.*", extend=False)
bpy.ops.object.delete()


Which will delete "Cube.001.001" also.