Reputation: 59
A function which returns a formatted string by replacing all instances of %X
with Xth
argument in args (0...len(args))
Example:
simple_format("%1 calls %0 and %2", "ashok", "hari")=="hari calls ashok and %2"
Please help me out.
Upvotes: 0
Views: 4133
Reputation: 1
Function to return a formatted string in python:
def simple_format(format, *args):
"""
Returns a formatted string by replacing all instances of %X with Xth argument in args (0...len(args))
e.g. "%0 says hello", "ted" should return "ted says hello"
"%1 says hello to %0", ("ted", "jack") should return jack says hello to ted etc.
If %X is used and X > len(args) it is returned as is.
"""
pass
count = 0
for name in args:
format = format.replace("%" + str(count), name)
count = count + 1
return format
Upvotes: 0
Reputation: 2827
UPDATE:
"{1} calls {0} and {2}".format("hari", "ashok", "x")
>>> 'ashok calls hari and x'
Upvotes: 0
Reputation: 142136
Here's an example utilising string.Template
:
from string import Template
def simple_format(text, *args):
class T(Template):
delimiter = '%'
idpattern = '\d+'
return T(text).safe_substitute({str(i):v for i, v in enumerate(args)})
simple_format("%1 calls %0 and %2", "ashok", "hari")
# hari calls ashok and %2
Upvotes: 1
Reputation: 113834
>>> "{1} calls {0} and {2}".format( "ashok", "hari", "tom")
'hari calls ashok and tom'
If you really need the function simple_format
, then:
import re
def simple_format(*args):
s = re.sub(r'%(\d+)', r'{\1}', args[0])
return s.format(*args[1:])
Example:
>>> simple_format("%1 calls %0 and %2", "ashok", "hari", "tom")
'hari calls ashok and tom'
Upvotes: 2