Вопрос по регулярным выражениям. Удаление 0 не из всей строки

Есть такая строка Afghanistan X 03/20/20 , как использовав re можно удалить 0 из строки не трогая 20


Ответы (1 шт):

Автор решения: Евгений

Вы можете найти любой ноль, перед которым не двойка и заменить его на то, что идёт перед ним. Поскольку замена может сопровождаться образованием новой пары с нулём, нужно выполнять циклы замены, пока такие пары ещё есть. Для проверки применил функции как к вашей строке, так и просто к строке из чисел, в которой были убраны все нули, кроме тех, перед которыми стоит 2

import re
s = 'Afghanistan X 03/20/20'
s_test = '230130230100300402120020304001203'

def clear_zero(s) -> str:
  t = re.findall(r'[^2]0', s)
  while t:
    for elem in t:
      s = re.sub(elem, elem[0], s)
    t = re.findall(r'[^2]0', s)
  return s

print(s, clear_zero(s), sep='\n')
print(s_test, clear_zero(s_test), sep='\n')
→ Ссылка