Учитывая пользовательскую маску, как ##/##/####
или же (###) ###-####
и строка цифр, длина которой равна числу #
из пользовательской маски,
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: недостаточно аргументов для строки формата недостаточно аргументов
для строки формата
Я знаю, почему я получаю эту ошибку, но могу пройти этот пункт. Любое решение приветствуется.
С вашим синтаксисом вам нужно сделать tuple
вместо join
ed строка с разделителями-запятыми, поскольку последняя рассматривается как один предоставленный строковый аргумент, поэтому вы столкнулись с ошибкой:
'%s%s/%s%s/%s%s%s%s' % tuple('13082004')
Или используйте более новую строку .format()
метод, с *
Оператор для распаковки строки в несколько аргументов:
'{}{}/{}{}/{}{}{}{}'.format(*'13082004')
mask = '%s%s/%s%s/%s%s%s%s'
mask % tuple('13082004')
выполнение приведенного выше кода приведет к:
'13/08/2004'