Python image

Python String Formatting

F-String was introduced in Python 3.6, and is now the preferred way of formatting strings.

Before Python 3.6 we had to use the format() method.

F-Strings

F-string allows you to format selected parts of a string.

To specify a string as an f-string, simply put an f in front of the string literal, like this:

Create an f-string:

txt = f"The price is 49 dollars"
print(txt)

Placeholders and Modifiers

To format values in an f-string, add placeholders {}, a placeholder can contain variables, operations, functions, and modifiers to format the value.

Add a placeholder for the price variable:

price = 59
txt = f"The price is {price} dollars"
print(txt)

A placeholder can also include a modifier to format the value.

A modifier is included by adding a colon : followed by a legal formatting type, like .2f which means fixed point number with 2 decimals:

Display the price with 2 decimals:

price = 59
txt = f"The price is {price:.2f} dollars"
print(txt)

You can also format a value directly without keeping it in a variable:

txt = f"The price is {95:.2f} dollars"
print(txt)

Perform Operations in F-Strings

You can perform Python operations inside the placeholders. You can do math operations:

Perform a math operation in the placeholder, and return the result:

txt = f"The price is {20 * 59} dollars"
print(txt)

Add taxes before displaying the price:

price = 59
tax = 0.25
txt = f"The price is {price + (price * tax)} dollars"
print(txt)

Return 'Expensive' if the price is over 50, otherwise return 'Cheap':

price = 49
txt = f"It is very {'Expensive' if price > 50 else 'Cheap'}"
print(txt)

Execute Functions in F-Strings

You can execute functions inside the placeholder:

Use the string method upper() to convert a value into upper case letters:

fruit = "apples"
txt = f"I love {fruit.upper()}"
print(txt)

Create a function that converts feet into meters:

def myconverter(x):
  return x * 0.3048

txt = f"The plane is flying at a {myconverter(30000)} meter altitude"
print(txt)

More Modifiers

There are several other modifiers that can be used to format values:

Use a comma as a thousand separator:

price = 59000
txt = f"The price is {price:,} dollars"
print(txt)
ModifierDescription
:<Left aligns the result (within the available space)
:>Right aligns the result (within the available space)
:^Center aligns the result (within the available space)
:=Places the sign to the left most position
:+Use a plus sign to indicate if the result is positive or negative
:-Use a minus sign for negative values only
:%Percentage format

String format()

Before Python 3.6 we used the format() method to format strings.

The format() method also uses curly brackets as placeholders {}, but the syntax is slightly different:

Add a placeholder where you want to display the price:

price = 49
txt = "The price is {} dollars"
print(txt.format(price))

Multiple Values

If you want to use more values, just add more values to the format() method:

print(txt.format(price, itemno, count))

Index Numbers

You can use index numbers (a number inside the curly brackets {0}) to be sure the values are placed in the correct placeholders:

quantity = 3
itemno = 567
price = 49
myorder = "I want {0} pieces of item number {1} for {2:.2f} dollars."
print(myorder.format(quantity, itemno, price))

Named Indexes

You can also use named indexes by entering a name inside the curly brackets {carname}:

myorder = "I have a {carname}, it is a {model}."
print(myorder.format(carname = "Ford", model = "Mustang"))