Use A Python Format String In A Variable
There are several ways to updates string variables with other variables. The two ways I use the most are `.format()` and Template Strings.
(Note that this is for dealing with strings in variables. If I'm outputting a string directly I use `f-strings` which are detailed in the notes further below)
I use the `.format()` option when there's not a lot of text (e.g. just one line) and the Template Strings when there's several lines (in which case I'm likely reading it in from a file.)
** Using .format()
This is the basic setup. A string is stored in the `initial_string` variable with `{}` acting as a placeholder for where the replacement value will be inserted.
The next line use calls `.format()` with the single value we want to use to replace the `{}` placeholder.
printing it on the next line show our final `hello, world` output.
initial_string = "hello, {}"
completed_string = initial_string.format('world')
print(completed_string)
hello, world
You can use multiple `{}` placeholders as well. For example:
initial_string = 'the {} brown {}'
completed_string = initial_string.format('quick', 'fox')
print(completed_string)
the quick brown fox
** Template Strings
I use template strings for longer texts. They use "named placeholders" that start with a `$` (e.g. `$color`, `$fruit`, and `$drink` in this example)
Those values get filled in with their corresponding named arguments (e.g. `color='blue'`) when the template is filled out with `.substitute()`
For example:
from string import Template
skeleton = Template("""
Glue the sheet to the dark $color background.
The juice of $fruit makes fine punch.
A pot of $drink helps to pass the evening.
""")
completed_text = skeleton.substitute(
color='blue',
fruit='lemons',
drink='tea'
)
print(completed_text)
Glue the sheet to the dark blue background. The juice of lemons makes fine punch. A pot of tea helps to pass the evening.
#+NOTES
This is what I use if I need to use a variable to hold the string that needs substitutions and replacements. Generally, I use that when I need to pass the string into a function, like:
from random import randint
def add_random_number(template):
update = template.format(randint(0,10))
return update
if __name__ == '__main__':
template = 'The random number is: {}'
output = add_random_number(template)
print(output)
The random number is: 2
If I don't need to put the template for the string in a variable to pass it around I'll use an `f-string` directly. For example:
speed = 'quick'
animal = 'fox'
print(f'the {speed} brown {animal}')
the quick brown fox