Question
Asked By – mpen
I know it’s a really simple question, but I have no idea how to google it.
how can I do
print '<a href="%s">%s</a>' % (my_url)
So that my_url
is used twice? I assume I have to “name” the %s
and then use a dict in the params, but I’m not sure of the proper syntax?
just FYI, I’m aware I can just use my_url
twice in the params, but that’s not the point 🙂
Now we will see solution for issue: String formatting named parameters?
Answer
Solution in Python 3.6+
Python 3.6 introduces literal string formatting, so that you can format the named parameters without any repeating any of your named parameters outside the string:
print(f'<a href="{my_url:s}">{my_url:s}</a>')
This will evaluate my_url
, so if it’s not defined you will get a NameError
. In fact, instead of my_url
, you can write an arbitrary Python expression, as long as it evaluates to a string (because of the :s
formatting code). If you want a string representation for the result of an expression that might not be a string, replace :s
by !s
, just like with regular, pre-literal string formatting.
For details on literal string formatting, see PEP 498, where it was first introduced.
This question is answered By – gerrit
This answer is collected from stackoverflow and reviewed by FixPython community admins, is licensed under cc by-sa 2.5 , cc by-sa 3.0 and cc by-sa 4.0