I have a positive integer variable which can have values between 0 to 999. This integer is then passed to a software.
To pass into this software the integer should a
You don't even need the formatting operators for this, just plain str
methods. To right justify with zeroes:
x.zfill(3)
To left justify with zeroes:
x.ljust(3, '0')
You'd need to wrap x
in str
first in this scenario if x
is currently an int
. At that point, it may be worth just using the formatting operators as others have suggested to directly produce the final str
, with no intermediate str
, when justification is required.
As mentioned in the question, milliseconds should be 1 -> 001
, not 100
. One millisecond is a thousandth of a second, not a tenth.
[str(num).zfill(3) for num in numbers]
or using Tigerhawk's method with the opposite alignment:
["{:>03}".format(num) for num in numbers]
I don't know why the zeros got chopped off (ideally you should fix the source of the problem), but you can format the numbers as strings and then turn them back into int
s:
numbers = [1, 19, 255]
numbers = [int('{:<03}'.format(number)) for number in numbers]
This left-aligns each number with <
, in a field 3
characters wide, filling extra characters with 0
.
You can do this by using ljust
and str
, then casting the result as an int
.
>>> numbers = [1, 19, 255]
>>> [int(str(num).ljust(3, '0')) for num in numbers]
[100, 190, 255]
More on ljust
here:
https://docs.python.org/2/library/stdtypes.html#string-methods