Formatted string literals (f-strings) in Python

PEP 498 introduced a new string formatting mechanism known as Literal String Interpolation or more commonly as F-strings (because of the leading f character preceding the string literal). The idea behind f-strings is to make string interpolation simpler.

To create an f-string, prefix the string with the letter “ f ”. The string itself can be formatted in much the same way that you would with str.format(). F-strings provide a concise and convenient way to embed python expressions inside string literals for formatting.
 
Code #1 :

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 program introducing f-string
val = 'Geeks'
print(f"{val}for{val} is a portal for {val}.")
  
  
name = 'Tushar'
age = 23
print(f"Hello, My name is {name} and I'm {age} years old.")

chevron_right


Output :



Hello, My name is Tushar and I'm 23 years old.
GeeksforGeeks is a portal for Geeks.

 
Code #2 :

filter_none

edit
close

play_arrow

link
brightness_4
code

# Prints today's date with help
# of datetime library
import datetime
  
today = datetime.datetime.today()
print(f"{today:%B %d, %Y}")

chevron_right


Output :

April 04, 2018

 
Note : F-strings are faster than the two most commonly used string formatting mechanisms, which are % formatting and str.format().
 
Let’s see few error examples, which might occur while using f-string :

Code #3 : Demonstrating Syntax error.

filter_none

edit
close

play_arrow

link
brightness_4
code

answer = 456
f"Your answer is "{answer}""

chevron_right


Code #4 : Backslash Cannot be used in format string directly.

filter_none

edit
close

play_arrow

link
brightness_4
code

f"newline: {ord('\n')}"

chevron_right


Output :

Traceback (most recent call last):
  Python Shell, prompt 29, line 1
Syntax Error: f-string expression part cannot include a backslash: , line 1, pos 0

 
But the documentation points out that we can put the backslash into a variable as a workaround though :

filter_none

edit
close

play_arrow

link
brightness_4
code

newline = ord('\n')
  
f"newline: {newline}"

chevron_right


Output :

newline: 10


Reference : PEP 498, Literal String Interpolation



My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.




Article Tags :

4


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.