Function to return a formatted string in python

◇◆丶佛笑我妖孽 提交于 2021-02-11 15:21:38

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!