Временное решение. Откройте окно модального всплывающего окна и вставьте внешний URL в качестве iframe.
Как насчет анализа строки на предмет чисел и тире, а затем добавления лидирующих нулей?
input = ['90-10-07457', '000480087800784', '001-713-0926', '12-710-8197', '1-345-1715', '9-23-4532', '000200007100272']
output = []
for inp in input:
# calculate length of string
inpLen = len(inp)
# calculate num of dashes
inpDashes = inp.count('-')
# add specific number of leading zeros
zeros = "0" * (15-(inpLen-inpDashes))
output.append(zeros + inp)
print (output)
>>> ['00000090-10-07457', '000480087800784', '00000001-713-0926', '00000012-710-8197', '00000001-345-1715', '000000009-23-4532', '000200007100272']
Ваше регулярное выражение не работает, как вы использовали \1
при замене, но шаблон регулярного выражения не имеет соответствующей группы захвата. \1
относится к первой группе захвата в шаблоне.
Если вы хотите попробовать свои силы в регулярных выражениях, вы можете использовать
re.sub(r'^(\d+)-(\d+)-(\d+) См. Демо Python .
Здесь ^(\d+)-(\d+)-(\d+)$
соответствует строке, которая начинается с 1+ цифр, затем имеет -
, затем 1+ цифр, -
и снова 1+ цифр, за которыми следует конец строки. Существуют три группы захвата, значения которых можно ссылаться с помощью обратных ссылок \1
, \2
и \3
из шаблона замены. Однако, поскольку нам нужно применить .zfill(5)
к каждому захваченному тексту, лямбда-выражение используется в качестве аргумента замены, а к захватам обращаются с помощью метода объекта данных соответствия group()
.
Однако, если ваши строки уже в правильном формате, вы можете просто разделить строки и отформатировать их по мере необходимости:
for i in range (0, len(input)):
splits = input[i].split('-')
if len(splits) == 1:
new_list.append(input[i])
else:
new_list.append("{}-{}-{}".format(splits[0].zfill(5), splits[1].zfill(5), splits[2].zfill(5)))
См. еще одну демонстрацию Python . Оба раствора дают
['00090-00010-07457', '000480087800784', '00001-00713-00926', '00012-00710-08197', '00001-00345-01715', '00009-00023-04532', '000200007100272']
, lambda x: "{}-{}-{}".format(x.group(1).zfill(5), x.group(2).zfill(5), x.group(3).zfill(5)), input[i])
См. Демо Python .
Здесь ^(\d+)-(\d+)-(\d+)$
соответствует строке, которая начинается с 1+ цифр, затем имеет -
, затем 1+ цифр, -
и снова 1+ цифр, за которыми следует конец строки. Существуют три группы захвата, значения которых можно ссылаться с помощью обратных ссылок \1
, \2
и \3
из шаблона замены. Однако, поскольку нам нужно применить .zfill(5)
к каждому захваченному тексту, лямбда-выражение используется в качестве аргумента замены, а к захватам обращаются с помощью метода объекта данных соответствия group()
.
Однако, если ваши строки уже в правильном формате, вы можете просто разделить строки и отформатировать их по мере необходимости:
for i in range (0, len(input)):
splits = input[i].split('-')
if len(splits) == 1:
new_list.append(input[i])
else:
new_list.append("{}-{}-{}".format(splits[0].zfill(5), splits[1].zfill(5), splits[2].zfill(5)))
См. еще одну демонстрацию Python . Оба раствора дают
['00090-00010-07457', '000480087800784', '00001-00713-00926', '00012-00710-08197', '00001-00345-01715', '00009-00023-04532', '000200007100272']