Assuming that you are using dot for separating decimal part from fractional one (and commas are not needed) we can
- Remove commas in string.
- Split string by whitespace.
- Convert each of substrings to floating number.
zip floats into pairs.
like
>>> string = '144.963286 -37.814212 144.964498 -37.813854 144.964962 -37.814806 144.963711, -37.815168'
>>> floats = map(float, string.replace(',', '').split()) # use `itertools.imap` instead of `map` in Python2
>>> list(zip(floats, floats))
[(144.963286, -37.814212), (144.964498, -37.813854), (144.964962, -37.814806), (144.963711, -37.815168)]
As @AlexanderReynolds suggested we can use itertools.zip_longest function instead of zip for cases with odd number of arguments with some sort of fillvalue (default is None) like
>>> string = '144.963286, -37.814212 42'
>>> floats = map(float, string.replace(',', '').split())
>>> from itertools import zip_longest
>>> list(zip_longest(floats, floats,
fillvalue=float('inf')))
[(144.963286, -37.814212), (42.0, inf)]
also we can do it in one (pretty complex though) line with itertools.repeat like
>>> from itertools import repeat
>>> list(zip_longest(*repeat(map(float, string.replace(',', '').split()),
times=2),
fillvalue=float('inf')))
[(144.963286, -37.814212), (42.0, inf)]