Because you split on a separator. If you split the string $2000 with the $ separator, there is an empty string on the left and 2000 on the right:
$2000
nothing____/ \____2000
With the second case of 2000$3000, there is still only one separator so it still produces two values in the array. It's just that the value left of the separator is 2000 rather than an empty string:
2000$3000
2000____/ \____3000
Provided you don't limit the split by specifying the maximum number of splits allowed, the resulting array size should always be one more than the number of separators.
If you want to remove all empty strings from the resultant collection, you can do it with list comprehension, the third segment below:
>>> s = '$$$1000$$2000$3000$$$' # test data
>>> [x for x in s.split('$') if x != ''] # remove all empty strings
['1000', '2000', '3000']
There are other ways to get rid of blanks at just the ends as well, either one or all:
>>> import re
>>> s='$$$1000$$2000$3000$$$'
>>> re.sub('^\$|\$$','',s).split('$') # just one
['', '', '1000', '', '2000', '3000', '', '']
>>> re.sub('^\$*|\$*$','',s).split('$') # all at the ends
['1000', '', '2000', '3000']
['', '2000'], not['', ' 2000']? Please always copy and paste transcripts exactly.splita string containing a single delimiter, you get two pieces.