Demystifying the Secrets of Python %s

Python supports C-style string formatting to create formatted Python strings. This formatting is achieved using a “%” operator. A format string consists of normal string elements along with special formatting symbols. In this topic, we will be discussing the Python %s operator.

Also known as String interpolation, String formatting is a method of formatting string-type elements. In this process, a custom string or variable is inserted into the predefined text. String formatting Python can be achieved in Python through various methods.

Basic String Formatting Using Python %s

Refer to the following implementation. We are demonstrating C-style string formatting using the %s operator. The %s operatorĀ lets you add a value to a Python string

myString = "PythonPool"

print("Welcome to, %s!" %myString)
Welcome to, PythonPool!

Python %s vs Python .format()

%s is an operatorIt is a method of the in-built string class of Python.
It is derived from the C style formatting technique.It was introduced in Python 3 and was made available in Python 2.7
The %s operator is slightly faster than the latter since it is a syntactical notation.It is slower due to the fact that it involves an extra method call.

Differences Between Other Format Operators

%s vs %d

Derived from CAlso derived from C
Allows you to format strings using other string types only.Allows you to format strings using integer types only.
Will maintain string formatWill truncate to an integer or a Python double.

Recommended Reading | Demystifying the Secrets of Python %d

%s vs. %r

Converts the string object using str() method.Converts the string object using repr() method.
Used as a regular string format specifier.Recommended using for debugging as it’s a “raw” format specifier.

%s vs. %f

Allows you to format string constants using other string typesAllows you to format float values
This is derived from C and is present in Python as well%f format specifier is a C language feature.

Formatting Python Strings using Tuples

In order to insert multiple string types, we can make use of a Python tuple and the %s operator.

Check out the following implementation:

print('%s %s %s'%('Welcome','to','PythonPool'))


Welcome to PythonPool
a = "Welcome"
b = "to"
c = "PythonPool"
print('%s %s %s'%(a,b,c))


Welcome to PythonPool

Using the %s operator in a Python SQL statement

Let’s take the following example:

cursor.execute("INSERT INTO myTable VALUES (%s, %s, %s)", (a,b,c))

The escaping and quoting for the variables are done by the Python Database API. Although, using the %s string formatting variables can leave the database vulnerable and be subjected to SQL injection attacks.

Formatting Python Strings using Dictionaries

Similar to tuples, we can use a dictionary in order to format a string with multiple string types.

print('%(Website)s has over %(number)s published articles!'%{"Website": "", "number": 500})

# Make sure to format the dictionary values as string 

Output has over 500 published articles!
You also pass variables to the dictionaries like so:
amount = 500
website = ""

print('%(Website)s has over %(number)s published articles!'%{"Website": website, "number": amount})

Output has over 500 published articles!

Using String Interpolation or f-strings to Format Strings

String interpolation was introduced recently in Python 3.6. F-strings are nothing but formatted string literals. This method allows you to embed expressions in Python string constants.

Refer to the following example:

website = "PythonPool"
f'Welcome to {website}!'


Welcome to PythonPool!

“f” is a pre-fix for the string constant, thereby called f-strings. This new method of string formatting is powerful as it allows you to perform arithmetics.

num1 = 6
num2 = 6
f'The sum is {num1 + num2} and the product is {num1*num2}'


The sum is 12 and the product is 36

Using the Python String Module to Format Strings

The string module is a part of the Python Standard Library under the Text Processing Services category.

The template function allows us to achieve this. Although this is a less powerful method, it’s useful in certain instances.

from string import Template
myWebsite = "PythonPool"
myTemplate = Template('Welcome to $website!')


Welcome to PythonPool!

Note that template strings do not support format specifiers. Use .substitute().

It is possible to use dictionaries in template strings to pass string objects.

from string import Template
myWebsite = "PythonPool"
myAmount  = 500
myTemplate = Template('Welcome to $website! We have over $amount articles')
myTemplate.substitute({"website": myWebsite, "amount":myAmount})


Welcome to PythonPool! We have over 500 articles


Can we use %s in Regex Python?

The %s operator will not work if you insert it in a regular expression. However, there is an expression that mimics the properties of %s. That is – \S+


We have looked at the C-derived %s string format specifier. Other methods to format Python string constants have been discussed as well. The differences between %s and other format specifiers have been established.

Notify of
Inline Feedbacks
View all comments