user4881093
user4881093

Reputation:

what does {:02d} mean in Python

it's very hard to find information about {:} online I saw some code below:

def dateformat(date):
    day, month, year=date.split('/')
    return "{:4d}{:02d}{:02d}".format(int(year),int(month),int(day))

I kinda of know it is filling leading 0 in the format, but I don't know what do '02' and 'd' in {:02d} do?

Upvotes: 26

Views: 97004

Answers (2)

Martijn Pieters
Martijn Pieters

Reputation: 1123640

You are looking for the str.format() documentation. Specifically, the 02d part is documented in the Format Specification Mini-Language.

02d formats an integer (d) to a field of minimum width 2 (2), with zero-padding on the left (leading 0):

>>> 'No digits: {:02d}, 1 digit: {:02d}, 2: {:02d}, 3: {:02d}'.format(0, 7, 42, 151)
'No digits: 00, 1 digit: 07, 2: 42, 3: 151'

From the documentation:

format_spec     ::=  [[fill]align][sign][z][#][0][width][grouping_option][.precision][type]

[...]

width is a decimal integer defining the minimum total field width, including any prefixes, separators, and other formatting characters. If not specified, then the field width will be determined by the content.

When no explicit alignment is given, preceding the width field by a zero ('0') character enables sign-aware zero-padding for numeric types. This is equivalent to a fill character of '0' with an alignment type of '='.

[...]

Finally, the type determines how the data should be presented. [...] The available integer presentation types are:

[...]

'd'
Decimal Integer. Outputs the number in base 10.

The same formats apply to formatted string literals (f-strings, f"...").

Upvotes: 39

Josie Koay
Josie Koay

Reputation: 831

As for your information :

format(1, '02')
'01'

format(100, '02')
'100'
        
'{:02}'.format(1)
'01'

'{:02}'.format(100)
'100'

However, d in {:02d} means number in base 10

Upvotes: 3

Related Questions