Tuesday 30 May 2023

Formatted strings in Python

Formatted strings in Python provide a way to evaluate the expressions in a String. Formatted strings are defined with prefix 'f', followed by a string that contain some placeholders to replace the expression values at runtime. Find the below example.

 

formatted_strings_1.py

name = 'Krishna'
age = 35
country = 'India'

msg = f'I am {name} from {country}, and I am {age} years old'
print(msg)

 


In this example, the formatted string f'I am {name} from {country}, and I am {age} years old' is used to create a formatted string. The expressions within curly braces ({}) are evaluated and their values are inserted into the string at those positions. The variables name, age and country are formatted and placed within the string, resulting in the desired output.

Above program generates below output.

I am Krishna from India, and I am 35 years old

Formatted strings support Format specifiers

Formatted strings support various format specifiers to specify the presentation of values like decimal places, padding, alignment etc.,

 

Alignment and padding example

name = 'Krishna'
age = 35
country = 'India'
msg = f'name : {name:<15}, age : {age:03}, country : {country:>10}.'

‘:’ is followed by a format specifier inside the curly braces {} within the f-string ‘msg’ to specify padding and alignment.

 

a.   < is used for left alignment.

b.   15 specifies the width of the field, indicating that the name should occupy 15 characters.

c.    03 specifies the width of the field is 3 characters and pad the age value with leading zeros if needed.

d.   > is used for right alignment

e.   10 specifies the width of the field, indicating that the country should occupy 10 characters.

 

Output

name : Krishna        , age : 035, country :      India.

Decimal places example

pi = 3.1415714285
formatted_pi = f"pi = {pi:.4f}" #3.1416

In this example, pi is formatted with :.4f, which specifies that it should be displayed with four decimal places.

 

Format numeric values with a comma (,)

n = 123456789.987654
formatted_n = f"n = {n:,f}" #123,456,789.987654

In the above example, I used the format specifier ‘:,f’ to format the decimal value with a comma (,).

 

We can even restrict number of decimal places with the format specifier ':,.3f', which restrict number of decimal places to 3.

 

Display a decimal number to binary, ocatal and hexa

n = 23
binary = f"Binary: {n:b}" #Binary: 10111
octal = f"Octal: {n:o}" #Octal: 27
hexadecimal = f"Hexadecimal: {n:x}" #Hexadecimal: 17

In the above example, I used the format specifiers :b, :o, and :x to display the number in binary, octal, and hexadecimal.

 

Format date and time

now = datetime.now()
formatted_date_and_time = f"date and time: {now:%Y-%m-%d %H:%M:%S}" #date and time: 2023-05-30 12:47:56

In the above example, I used the format specifier ‘:%Y-%m-%d %H:%M:%S’ to format today’s datetime.

 

Find the below working application.

 

formatted_strings_with_format_specifiers.py

from datetime import datetime

print('Alignment and padding example')
name = 'Krishna'
age = 35
country = 'India'
msg = f'name : {name:<15}, age : {age:03}, country : {country:>10}.'
print(msg)

print('\nDecimal places example')
pi = 3.1415714285
formatted_pi = f"pi = {pi:.4f}"
print('pi : ', pi)
print('formatted_pi : ', formatted_pi)

print('\nFormat numeric values with a ,')
n = 123456789.987654
formatted_n = f"n = {n:,f}"
print('n : ', n)
print('formatted_n : ', formatted_n)

print('\nFormat numeric values with a , and restrict decimal places to 3')
formatted_n = f"n = {n:,.3f}"
print('formatted_n : ', formatted_n)

print('\nFormat a decimal number to binary, ocatal and hexa')
n = 23
binary = f"Binary: {n:b}"
octal = f"Octal: {n:o}"
hexadecimal = f"Hexadecimal: {n:x}"
print('n : ', n)
print(binary)
print(octal)
print(hexadecimal)

print('\nFormat date and time')
now = datetime.now()
formatted_date_and_time = f"date and time: {now:%Y-%m-%d %H:%M:%S}"
print(formatted_date_and_time)

Output

Alignment and padding example
name : Krishna        , age : 035, country :      India.

Decimal places example
pi :  3.1415714285
formatted_pi :  pi = 3.1416

Format numeric values with a ,
n :  123456789.987654
formatted_n :  n = 123,456,789.987654

Format numeric values with a , and restrict decimal places to 3
formatted_n :  n = 123,456,789.988

Format a decimal number to binary, ocatal and hexa
n :  23
Binary: 10111
Octal: 27
Hexadecimal: 17

Format date and time
date and time: 2023-05-30 12:47:56

References

https://docs.python.org/3/library/string.html#formatspec

 

 

 

Previous                                                 Next                                                 Home

No comments:

Post a Comment