Python’ formatted string literals or f-string makes the string formatting very easier. The f-string was introduced in Python 3.6 under PEP-498. It has easy syntax compared to the previous string formatting methods.
The f-string is beginning with the letter f or F and next, the string is enclosed in single or triple quotation mark. Inside this string, you can write a Python expression between { and } characters that can refer to variables or literal values.
In [1]:
fname = "Mark"
lname = "Ronson"
y = f'Hello, {fname} {lname}!' # f-string using single quotation mark
print(y)
Out[1]: Hello, Mark Ronson!
In [2]:
fname = "Mark"
lname = "Ronson"
print(f'''Hello, {fname} {lname}!''') # f-string using triple quotation mark
Out[2]: Hello, Mark Ronson!
Syntax:
{value : [<flags>][<width>][.<precision>][<type>]}
Floating-point formatting – Passing a precision after the ':' will cause the output to be a specified decimal place.
In [3]: print(f'The share price of apple increased by {52.1234:.2f}%')
Out[3]: The share price of apple increased by 52.12%
f-string width – Passing an integer after the ':' will cause that field to be a minimum number of characters wide.
In [4]: print(f'{"banana":10} ==> {150:10d}')
Out[4]: banana ==> 150
f-string with the arithmetic operation – Perform the arithmetic calculation within { }
In [5]: print(f'The sum: {2} + {3} = {2+3}')
Out[5]: The sum: 2 + 3 = 5
f-string with Python’ Dictionary – Pass the Python dictionary to print the data.
In [6]:
fruit = {'Banana':25,'Apple':50,'Orange':30}
for f in fruit:
print(f'{f} ==> ${fruit[f]}')
Out[6]:
Banana ==> $25
Apple ==> $50
Orange ==> $30
f-string calling function – You can call the python function within the f-string format.
In [7]:
def sum_fn(a,b):
return a+b
print(f'The sum: {sum_fn(2,3)}')
Out[7]: The sum: 5
f-string alignment – You can control over the appearance of the format string.
- > – Right Justified
- < – Left Justified
- ^ – Center Justified
In [8]: print(f'{"Hello":>10}') # width: 10 & Right Justified
Out[8]: Hello
In [9]: print(f'{"Hello":<10}') # width: 10 & left Justified
Out[9]: Hello
In [10]: print(f'{"Hello":^10}') # width: 10 & Center Justified
Out[10]: Hello
In [11]: print(f'{"Hello":@>10}') # width: 10 & Right Justified and fill as '@'
Out[11]: @@@@@Hello
In [12]: print(f'{"Hello":*^10}') # width: 10 & center Justified and fill as '*'
Out[12]: **Hello***
Type Conversion – You can make the type conversion in octal, hexadecimal, binary etc using f-string.
In [13]: print(f'The Octal value of {10} is {10:o}')
Out[13]: The Octal value of 10 is 12
In [14]: print(f'The Hexadecimal value of {10} is "{10:x}"')
Out[14]: The Hexadecimal value of 10 is "a"
In [15]: print(f'The binary representation of {10} is "{10:b}"')
Out[15]: The binary representation of 10 is "1010"
The Flag Option:
| Option | Meaning |
|---|---|
'#' |
Generally, the floating-point number will not display a decimal point, if there are not any digit exist after the decimal point. The Flag # force to include the decimal point in the formatted output.
For the Hexadecimal and Octal type, the Flag# force to include the base information in the formatted output. The integer type avoids considering Flag-#. |
'0' |
When the specified value of the width field is larger than the output length, the extra space is padded to the output. This 0-Flag padded the string with zero instead of space. |
'+' |
indicates that a sign should be used for both positive as well as negative numbers. |
'-' |
indicates that a sign should be used only for negative numbers (this is the default behavior). |
| space | indicates that a leading space should be used on positive numbers, and a minus sign on negative numbers. |
Flag # – '#' option adds the prefix '0b', '0o', or '0x' to the output value binary, octal and hexadecimal respectively.
In [16]: print(f'The Octal value of {10} is {10:#o}')
Out[16]: The Octal value of 10 is 0o12
In [17]: print(f'The Hexadecimal value of {10} is "{10:#x}"')
Out[17]: The Hexadecimal value of 10 is "0xa"
In [18]: print(f'The binary representation of {10} is "{10:#b}"')
Out[18]: The binary representation of 10 is "0b1010"
Example of Flag ‘+’, ‘-‘ & ‘ ‘
In [19]: print(f'{1.23:f} & {-1.23:f}') # Defalult: No sign
Out[19]: 1.230000; -1.230000
In [20]: print(f'{1.23:+f} & {-1.23:+f}') # Use '+' sign
Out[20]: +1.230000; -1.230000
In [21]: print(f'{1.23:-f} & {-1.23:-f}') # USe '-' sign
Out[21]: 1.230000; -1.230000
In [22]: print(f'{1.23: f} & {-1.23: f}') # Use ' '(space) sign
Out[22]: ' 1.230000; -1.230000'
. . .
Curly Braces – You can print the {} braces in the output string using a double set of braces with f-string formatting.
In [23]: print(f'{{"Good Morning"}}')
Out[23]: {"Good Morning"}
. . .