These are all informative answers, but none are quite getting at the core of what the difference is between %s
and %d
.
%s
tells the formatter to call the str[]
function on the argument and since we are coercing to a string by definition, %s
is essentially just performing str[arg]
.
%d
on the other hand, is calling int[]
on the argument before calling str[]
, like str[int[arg]]
, This will cause int
coercion as well as
str
coercion.
For example, I can convert a hex value to decimal,
>>> '%d' % 0x15
'21'
or truncate a float.
>>> '%d' % 34.5
'34'
But the operation will raise an exception if the argument isn't a number.
>>> '%d' % 'thirteen'
Traceback [most recent call last]:
File "", line 1, in
TypeError: %d format: a number is required, not str
So if the intent is just to call str[arg]
, then %s
is sufficient, but if you need extra formatting [like formatting float decimal places] or other coercion, then the other format symbols are needed.
With the f-string
notation, when you leave the formatter out, the
default is str
.
>>> a = 1
>>> f'{a}'
'1'
>>> f'{a:d}'
'1'
>>> a = '1'
>>> f'{a:d}'
Traceback [most recent call last]:
File "", line 1, in
ValueError: Unknown format code 'd' for object of type 'str'
The same is true with string.format
; the default is str
.
>>> a = 1
>>> '{}'.format[a]
'1'
>>> '{!s}'.format[a]
'1'
>>> '{:d}'.format[a]
'1'
The following article will cover points like % operator, string formatting, and most importantly, focus on the %d usage in Python.
Do you have some experience with the C or Pearl language? If yes, you would have worked with the format specifier like %d, %s, %f, etc., in the printf function. Similar to C, Python too can mimic this ancient functionality, using the ‘ % ‘ operator. Also known as string formatting or string modulo or interpolation operator. As it interpolates various class types into a formatted string.
There are better alternatives to it, for instance, the format method and f-strings. However, string formatting is widely used and is still a part of python3. It is likely the % operator will get discontinued from the upcoming python versions. Hence you should prefer the f-strings or format method. With this in mind and for the sake of knowledge, we will discuss it. Read more here.
- How to use %d in Python
- Using %d for formatting strings in Python
- Using %d in a loop
- Alternatives
- Formatting strings using f-strings
- Formatting strings using the str.format method
- Difference between %s and %d
- %s
- %d
- Template strings instead of %d
- FAQs
- Conclusion
- Trending Python Articles
How to use %d in Python
%d acts as a placeholder for the digits. Similarly, %s and %f act like placeholders for the strings and the floating-point values. Let’s understand how we can use %d in Python with some examples.
Using %d for formatting strings in Python
a = 10 b = 11 c = a + b print["%d + %d = %d" % [a,b,c]]
Using %d in a loop
num_range = int[input["Enter a number:"]] for i in range[num_range]: print["%d" %[i**2],end=", "]
Alternatives
Better alternatives to string formatting are the format method and f-strings. Let’s look at how we can use them. For instance.
Formatting strings using f-strings
Example 1:
a = 10 b = 11 c = a + b # using f-strings print[f"{a} + {b} = {c}"]
In the above code, we add two numbers, store the result in the third variable, and later print all the values together using the f-strings.
Example 2:
number, count = 5, 0 while count < number: print[f"Count: {count}"] count += 1
The above example code prints the formatted string with an increasing value of count till the number.
Formatting strings using the str.format method
Example 1:
a = 10 b = 11 c = a + b # usign format method print["{0} + {1} = {2}".format[a, b, c]]
In the above code, we add two numbers, store the result in the third variable, and later print all the values together using the format method of the str class. Here, 0, 1 & 2 represent values of a, b, c respectively.
Example 2:
number, count = 0, 5 while count > number: print["Count: {}".format[count]] count -= 1
The above example code prints the formatted string with decreasing value of count till the number.
Difference between %s and %d
The %s is used for interpolating strings, while %d is used for integers. %s does string conversion before formatting. At the same time, %d does decimal conversion before formatting the strings.
Let’s take examples to clear our point.
%s
string1 = "You’re you, you see," string2 = " and nobody else. " string3 = "You are you, right?" print['%s%s%s' %[string1,string2,string3]]
Recommended Reading | Demystifying the Secrets of Python %s
%d
birthyear = int[input["Enter birth year:"]] print["You're %d years old." %[2022-birthyear]]
Template strings instead of %d
Python has another tool in its belt named template strings which is less powerful than its counterparts.
from string import Template temp = Template['Hello, $name!'] print[temp.substitute[name = 'Kisuke']]
FAQs
What do %d, %s, and %f mean in Python?
%d acts as a placeholder for the digits. Similarly, %s and %f act like placeholders for the strings and the floating-point values.
How do I print %d output in Python?
You can use string formatting in Python. For instance:print["Income :$%d" %[10000]]
Output: Income: $10000
Can we use %d in regex?
Regex used ‘ \d ‘ for matching values from 0-9. It serves an entirely different purpose compared to string formatting’s %d.
Conclusion
% operator in Python is a relic of the past, in other words. There are better alternatives. For instance, f-strings and format methods are more readable and more pythonic. However, the % operator played a vital role once.
Trending Python Articles
ImportError: Attempted Relative Import With No Known Parent Package
●September 24, 2022
Easily Convert Unix time to Datetime in Python
by Vishnu Venkatesh●September 13, 2022
How To Convert PIL Images to Numpy Array
by Vishnu Venkatesh●September 10, 2022
The A-Z of Python Virtualenv Location
by Vishnu Venkatesh●September 8, 2022