You can use str.split([sep[, maxsplit]])
Return a list of the words in the string, using sep as the delimiter string. If maxsplit is given, at most maxsplit splits are done (thus, the list will have at most maxsplit+1 elements). If maxsplit is not specified or -1, then there is no limit on the number of splits (all possible splits are made).
Applied
>> ' 1 2 3 '.split()
['1', '2', '3']
in "tandem" with str.replace(old, new[, count])
Return a copy of the string with all occurrences of substring old replaced by new. If the optional argument count is given, only the first count occurrences are replaced.
Applied
>>> a = 'h!e!l!l!o! w!o!r!l!d!'
>>> a.replace('!','')
'hello world'
Applied to your scenario:
>> 'Breathing 1:-31.145 9:-32.8942 13:-35.8225 2:-35.9872 17:-36.2135 16:-36.6343
12:-36.7487 4:-37.8538 8:-38.6924 7:-39.0389 14:-39.0697 18:-40.0523
3:-40.5393 15:-40.5825 5:-41.6323 11:-45.2976 10:-53.3063
6:-231.617'.replace(':-',' ').split(' ')
['Breathing', '1', '31.145', '9', '32.8942', '13', '35.8225', '2',
'35.9872', '17', '36.2135', '16', '36.6343', '12', '36.7487', '4', '37.8538',
'8', '38.6924', '7', '39.0389', '14', '39.0697', '18', '40.0523', '3',
'40.5393', '15', '40.5825', '5', '41.6323', '11', '45.2976',
'10', '53.3063', '6', '231.617']
All the definition are taken from manual
-s? What is the significance of the data's structure?'-'.array[0]==Breathing , array[1]== 1, array[2]==31.145and so on.1:-31.145becomes1and-31.145(a negative number)? Then again I have no idea what the data is..