问题
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:
>>> "{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'
回答2:
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
回答3:
UPDATE:
"{1} calls {0} and {2}".format("hari", "ashok", "x")
>>> 'ashok calls hari and x'
回答4:
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
来源:https://stackoverflow.com/questions/28260017/function-to-return-a-formatted-string-in-python