Regex, вероятно, лучший вариант:
import re
a = '020220111311811001001001001'
a = re.sub(r'1{2,}', '1', re.sub(r'(?<!1)1(?=[^1]|$)', '', a))
print(a)
Сначала подпишите один 1
с, затем подпишите несколько вхождений 1
.Я добавил еще несколько символов в a
для целей тестирования, и вывел:
0202201318100000000
Если вам не нравится некоторая путаница, вызванная однострочным:
a = re.sub(r'(?<!1)1(?=[^1]|$)', '', a)
a = re.sub(r'1{2,}', '1', a)
Объяснение (?<!1)1(?=[^1]|$)
:
(?<!1)
: убедитесь, что указанный ранее символ не является 1
. 1
: буквально соответствует 1
. (?=[^1]|$)
: убедитесь, что символ впереди - либо а), а не 1
, либо б) конец строки.