We know that formatting one argument can be done using one %s
in a string:
>>> "Hello %s" % "world"
'Hello world'
for two arguments, we can use two %s
(duh!):
>>> "Hello %s, %s" % ("John", "Joe")
'Hello John, Joe'
So, how can I format a variable number of arguments without having to explicitly define within the base string a number of %s
equal to the number of arguments to format? it would be very cool if something like this exists:
>>> "Hello <cool_operator_here>" % ("John", "Joe", "Mary")
Hello JohnJoeMary
>>> "Hello <cool_operator_here>" % ("John", "Joe", "Mary", "Rick", "Sophie")
Hello JohnJoeMaryRickSophie
Is this even possible or the only thing I could do about it is to do something like:
>>> my_args = ["John", "Joe", "Mary"]
>>> my_str = "Hello " + ("".join(["%s"] * len(my_args)))
>>> my_str % tuple(my_args)
"Hello JohnJoeMary"
NOTE: I need to do it with the %s
string formatting operator.
UPDATE:
It needs to be with the %s
because a function from another library formats my string using that operator given that I pass the unformatted string and the args to format it, but it makes some checking and corrections (if needed) on the args before actually making the formatting.
So I need to call it:
>>> function_in_library("Hello <cool_operator_here>", ["John", "Joe", "Mary"])
"Hello JohnJoeMary"
Thanks for your help!
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…