real_printf

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
_string_re = compile(r'%(\d+)\$([\d\.]*[diufFeEgGxXoscpn%])')
def real_printf(string, values=None):
	if not values:
		return string
	if type(values) not in [tuple, list]:
		values = (values,)
	_string = _string_re.sub('%(\g<1>)\g<2>', string)
	if _string == string:
		return string % values
	else:
		return _string % dict((str(i+1), values[i]) for i in xrange(len(values)))

Comments

(Forgotten your password?)

You may use Markdown syntax here, but raw HTML will be removed.