Ваш алгоритм неверен вот сформированный список nl без замены ,-, на -
[1, 2, 3, 4, '-', 7, 9, '-', 11, 13, 14, 15, 16, 17, '-', 19]
видно что даже если сделать замену строка будет неправильная...
будет 1,2,3,4-7,9-11 и т.д. что неверно
Traceback (most recent call last):
File "C:\PrjPython\t2.py", line 11, in
print(','.join(nl).replace(',-,', '-'))
TypeError: sequence item 0: expected str instance, int found
[Finished in 0.4s with exit code 1]