Поскольку вы разделились на разделитель . Если разделить строку $2000
с $
сепаратором, есть пустая строка слева и 2000
справа:
$2000
nothing____/ \____2000
С вторым случаем 2000$3000
, есть еще только один сепаратора, так это все еще производит два значения в массиве. Это просто, что значение слева от сепаратора 2000
, а не пустая строка:
2000$3000
2000____/ \____3000
условия, что вы не ограничиваете split
, указав максимальное число разделений позволили, размер результирующего массива всегда должен быть больше одной чем число разделителей.
Если вы хотите удалить всех пустых строки из результирующей коллекции, вы можете сделать это с списком пониманием, третий сегмент ниже:
>>> s = '$$$1000$$2000$3000$$$' # test data
>>> [x for x in s.split('$') if x != ''] # remove all empty strings
['1000', '2000', '3000']
Есть и другие способы, чтобы избавиться от пробелов в только также целиком или полностью:
>>> 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']', а не '['', '2000']'? Всегда копируйте и вставляйте транскрипты точно. – DSM
Я думаю, что имеет смысл, что когда вы «разделяете» строку, содержащую один разделитель, вы получаете две части. –