Как применить пользовательскую маску в строку цифр в Python?

Учитывая пользовательскую маску, как ##/##/#### или же (###) ###-#### и строка цифр, длина которой равна числу # из пользовательской маски,

Как определить функцию под названием format что применяет пользовательскую маску к строке?

Например:

> format('##/##/####','13082004')
13/08/2004

В PHP я могу использовать vsprintf для достижения этой цели:

function format($mask,$string)
{
return  vsprintf($mask, str_split($string));
}

$mask = "%s%s.%s%s%s.%s%s%s/%s%s%s%s-%s%s";
echo format($mask,'11622112000109');
11.622.112/0001-09

Я пробовал что-то похожее с питон с помощью % оператор

mask = '%s%s/%s%s/%s%s%s%s'
mask % ', '.join(list('13082004'))

Но,

TypeError: недостаточно аргументов для строки формата недостаточно аргументов
для строки формата

Я знаю, почему я получаю эту ошибку, но могу пройти этот пункт. Любое решение приветствуется.

3

Решение

С вашим синтаксисом вам нужно сделать tupleвместо joined строка с разделителями-запятыми, поскольку последняя рассматривается как один предоставленный строковый аргумент, поэтому вы столкнулись с ошибкой:

'%s%s/%s%s/%s%s%s%s' % tuple('13082004')

Или используйте более новую строку .format() метод, с * Оператор для распаковки строки в несколько аргументов:

'{}{}/{}{}/{}{}{}{}'.format(*'13082004')
6

Другие решения

mask = '%s%s/%s%s/%s%s%s%s'
mask % tuple('13082004')

выполнение приведенного выше кода приведет к:

'13/08/2004'
1

По вопросам рекламы [email protected]