Skip to main content

How to use Conditional Formatting with f-Strings in Python

Python's f-strings (formatted string literals) provide a powerful way to embed expressions and variables directly within strings.

This guide explains how to use conditional logic (ternary operators) within f-strings to dynamically format output based on conditions.

Basic Conditional Formatting with Ternary Operators

The core concept is to use a ternary operator (also known as a conditional expression) inside the f-string's curly braces {}:

my_str = 'tutorialreference.com'

result = f'Result: {my_str.upper() if len(my_str) > 1 else my_str.capitalize()}'
print(result) # Output: Result: TUTORIALREFERENCE.COM
  • The ternary operator my_str.upper() if len(my_str) > 1 else my_str.capitalize() will first evaluate the boolean value of len(my_str) > 1.

The f-string f'Result: { }' embeds the result of a ternary operator (conditional expression). The general form is:

f'{ <value_if_true> if <condition> else <value_if_false> }'

In this example:

  • Condition: len(my_str) > 1 (checks if the string length is greater than 1)
  • Value if True: my_str.upper() (converts the string to uppercase)
  • Value if False: my_str.capitalize() (capitalizes the first letter)

Here is another simple example:

my_bool = True
result = 'hello' if my_bool else 'bye'
print(result) # Output: hello
  • If the condition is True, the ternary returns the value to the left, and if it's False it returns the value to the right.

Conditional Formatting with Numerical Values

You can combine conditional logic with f-string's formatting capabilities for numbers:

my_num = 4.56789
result = f'The number is: {my_num:.2f}' # Standard formatting, 2 decimal places
print(result) # Output: The number is: 4.57

my_num = 4.56789
result = f'The number is: {my_num:.2f if my_num > 1 else ""}' # Conditional formatting
print(result) # Output: The number is: 4.57

f'{my_num:{".2f" if my_num > 1 else ""}}'

  • The outer curly braces {} are for the f-string.
  • The inner curly braces {} are for the format specifier.
  • The ternary operator ".2f" if my_num > 1 else "" chooses the format string based on the value of my_num. If my_num is greater than 1 it will use the .2f, otherwise it will return an empty string.

Quoting and Escaping within f-strings

When using string literals within an f-string's expression, be careful with quoting:

  • Alternate quote types: If your f-string is enclosed in double quotes ("), use single quotes (') inside the expression (and vice-versa). This is the best and most readable approach.
my_num = 4.56789
my_bool = True
result = f'{my_num:".2f" if my_bool else ""}' # Correct: single quotes in f-string
print(result) # Output: 4.57