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')

hello, world

You can use multiple `{}` placeholders as well. For example:

initial_string = 'the {} brown {}'

  completed_string = initial_string.format('quick', 'fox')

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(

Glue the sheet to the dark blue background.
  The juice of lemons makes fine punch.
  A pot of tea helps to pass the evening.


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)
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