
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)| Modifier | Description |
|---|---|
| :< | 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"))