• Home
  • 4.15 String Formatting with %

4.15 String Formatting with %

View Categories

4.15 String Formatting with %

4 min read

String formatting is the process of inserting values into a string to create meaningful output.

Before the introduction of str.format() and f-strings, Python commonly used the % operator for string formatting. This style is known as printf-style formatting because it is similar to the printf() function in the C programming language.

The % operator replaces format specifiers such as %s, %d, and %f with actual values.

Although modern Python code often uses f-strings, you may still encounter % formatting in older codebases, making it important to understand.


Syntax #

"format string" % value

For multiple values:

"format string" % (value1, value2, value3)

Common Format Specifiers #

Specifier Description
%s String
%d Integer
%f Floating-point number
%.2f Floating-point number with 2 decimal places
%c Single character
%% Prints the % character

Example 1: Formatting a String #

main.py

name = "Alice"

print("Hello, %s!" % name)

Output #

Hello, Alice!

Explanation #

  • %s is the placeholder for a string.
  • The value of name replaces %s.
  • The formatted string is printed.

Example 2: Formatting an Integer #

main.py

age = 21

print("Age: %d" % age)

Output #

Age: 21

Explanation #

  • %d is used for integers.
  • The integer value replaces the placeholder.
  • The output displays the formatted integer.

Example 3: Formatting a Floating-Point Number #

main.py

price = 49.95

print("Price: %f" % price)

Output #

Price: 49.950000

Explanation #

  • %f formats a floating-point number.
  • By default, six digits are displayed after the decimal point.
  • Python automatically formats the number.

Example 4: Limiting Decimal Places #

main.py

pi = 3.14159265

print("Pi = %.2f" % pi)

Output #

Pi = 3.14

Explanation #

  • %.2f displays two digits after the decimal point.
  • Python rounds the value automatically.
  • This format is useful for displaying measurements and financial values.

Example 5: Formatting Multiple Values #

main.py

name = "John"
age = 25

print("Name: %s, Age: %d" % (name, age))

Output #

Name: John, Age: 25

Explanation #

  • Multiple values are passed as a tuple.
  • %s receives the string.
  • %d receives the integer.
  • Each placeholder is replaced in order.

Example 6: User Input #

main.py

name = input("Enter your name: ")

print("Welcome, %s!" % name)

Sample Input #

Alice

Output #

Welcome, Alice!

Explanation #

  • The user enters a string.
  • %s inserts the entered name into the message.
  • The formatted greeting is displayed.

Example 7: Printing a Percent Sign #

main.py

score = 95

print("Score: %d%%" % score)

Output #

Score: 95%

Explanation #

  • %% prints a literal percent sign.
  • %d formats the integer.
  • Without %%, Python would interpret % as another format specifier.

Example 8: Formatting a Character #

main.py

letter = 'A'

print("Letter: %c" % letter)

Output #

Letter: A

Explanation #

  • %c formats a single character.
  • The character replaces the placeholder.
  • The formatted string is printed.

Example 9: Mixing Different Data Types #

main.py

name = "Laptop"
quantity = 3
price = 599.99

print("Product: %s, Quantity: %d, Price: $%.2f" % (name, quantity, price))

Output #

Product: Laptop, Quantity: 3, Price: $599.99

Explanation #

  • %s formats the product name.
  • %d formats the quantity.
  • %.2f formats the price with two decimal places.
  • All placeholders are replaced in sequence.

Example 10: Checking the Result Type #

main.py

name = "Python"

result = "Welcome %s" % name

print(result)
print(type(result))

Output #

Welcome Python
<class 'str'>

Explanation #

  • String formatting creates a new string.
  • The formatted result is stored in result.
  • Its data type is str.

Common Mistakes #

1. Using the Wrong Format Specifier #

Incorrect

age = "21"

print("Age: %d" % age)

Output #

TypeError: %d format: a real number is required, not str

Reason

%d expects an integer, but a string was provided.

Correct

age = 21

print("Age: %d" % age)

or

age = "21"

print("Age: %s" % age)

2. Forgetting Parentheses for Multiple Values #

Incorrect

name = "John"
age = 25

print("Name: %s Age: %d" % name, age)

Output #

TypeError

Reason

Multiple values must be grouped into a tuple.

Correct

print("Name: %s Age: %d" % (name, age))

3. Forgetting to Escape the Percent Sign #

Incorrect

score = 80

print("Score: %d%" % score)

Output #

ValueError: incomplete format

Reason

A single % starts another format specifier.

Correct

print("Score: %d%%" % score)

4. Expecting %f to Show Only Two Decimal Places #

Incorrect

price = 19.5

print("Price: %f" % price)

Incorrect Expectation #

Price: 19.50

Actual Output #

Price: 19.500000

Reason

%f displays six decimal places by default.

Correct

print("Price: %.2f" % price)

Best Practices #

  • Use the correct format specifier for each data type.
  • Use %.2f when displaying floating-point values with two decimal places.
  • Group multiple values into a tuple.
  • Use %% to print a percent sign.
  • Prefer f-strings for new Python programs, but understand % formatting for maintaining older code.

Key Points to Remember #

  • % formatting is known as printf-style formatting.
  • %s formats strings.
  • %d formats integers.
  • %f formats floating-point numbers.
  • %.2f limits floating-point output to two decimal places.
  • Multiple values are passed as a tuple.
  • % formatting creates and returns a new string.

Powered by BetterDocs

Leave a Reply

Your email address will not be published. Required fields are marked *