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
No comments:
Post a Comment