0

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.

1

4 Answers 4

2
>>> "{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'
Sign up to request clarification or add additional context in comments.

Comments

1

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

Comments

0

UPDATE:

"{1} calls {0} and {2}".format("hari", "ashok", "x")
>>> 'ashok calls hari and x'

Comments

0

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.