From the format of your example, you want int's in the list. If so, then you will need to convert the string numbers to int's. If not, then you are done after the string split.
text="1-2-3-4"
numlist=[int(ith) for ith in text.split('-')]
print numlist
[1, 2, 3, 4]
textlist=text.split('-')
print textlist
['1', '2', '3', '4']
EDIT: Revising my answer to reflect the update in the question.
If the list can be malformed then "try...catch" if your friend. This will enforce that the list is either well formed, or you get an empty list.
>>> def convert(input):
... try:
... templist=[int(ith) for ith in input.split('-')]
... except:
... templist=[]
... return templist
...
>>> convert('1-2-3-4')
[1, 2, 3, 4]
>>> convert('')
[]
>>> convert('----1-2--3--4---')
[]
>>> convert('Explicit is better than implicit.')
[]
>>> convert('1-1 = 0')
[]