26

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?

4
  • 5
    You are looking for the str.format() documentation. Commented Apr 11, 2016 at 8:44
  • Check out pyformat.info for documentation on format strings. There's probably a bunch of other resources. Commented Apr 11, 2016 at 8:46
  • Re: {:}, you don't need the colon any more if there is no formatting to be done, as in 'hello {}'.format("world") Commented Apr 11, 2016 at 9:01
  • You can learn everything about Python string formatting in this cookbook - mkaz.tech/python-string-format.html Commented Apr 11, 2016 at 9:34

2 Answers 2

40

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"...").

Sign up to request clarification or add additional context in comments.

Comments

4

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.