Right-justify, Center, Left-justify Strings and Numbers in Python

Modified: | Tags: Python, String

Use the rjust(), center(), or ljust() methods to right-justify, center, or left-justify strings str in Python. You can convert numbers (int and float) to strings using str() and apply these methods.

Right-justify strings: rjust()

Use the rjust() method to right-justify strings.

The first argument determines the length of the output string. By default, it is filled with spaces.

s = 'abc'

print(s.rjust(8))
#      abc

print(type(s.rjust(8)))
# <class 'str'>

If a value less or equal to the length of the original string is specified, it returns the original string unchanged.

print(s.rjust(2))
# abc

You can provide a specific padding character as the second argument. However, if you provide a string with more than one character, a TypeError is raised.

print(s.rjust(8, '*'))
# *****abc

# print(s.rjust(8, 'ab'))
# TypeError: The fill character must be exactly one character long

You can also use the zfill() method for zero-padding. Unlike rjust(), zfill() places zeros after the sign (+, -).

s = '-123'

print(s.rjust(8, '0'))
# 0000-123

print(s.zfill(8))
# -0000123

For more details on zero-padding, refer to the following article.

Center strings: center()

Use the center() method to center strings.

Its usage is the same as rjust(). If the number of padding characters is odd, the right side will have an extra character.

s = 'abc'

print(s.center(8))
#   abc   

print(s.center(8, '*'))
# **abc***

print(s.center(9, '*'))
# ***abc***

print(s.center(10, '*'))
# ***abc****

Left-justify strings: ljust()

Use the ljust() method to left-justify strings.

Its usage is the same as rjust() and center().

Although it may not be visible in the output, trailing spaces are added when the second argument is omitted.

s = 'abc'

print(s.ljust(8))
# abc     

print(s.ljust(8, '*'))
# abc*****

Apply to numbers (int and float)

If you want to right-justify, center, or left-justify a non-string object such as an integer (int) or floating point number (float), convert it to a string with str() and call these methods.

i = 123

print(type(i))
# <class 'int'>

print(str(i).rjust(8, '*'))
# *****123

print(str(i).center(8, '*'))
# **123***

print(str(i).ljust(8, '*'))
# 123*****

Format strings: format(), f-strings

Both the built-in format() function and the format() method of str allow various formatting options. See the following article for more information.

To right-justify, center, or left-justify, use [CHARACTER][DIRECTION][STRING_LENGTH] as the format string. Use >, ^, or < to indicate the direction.

s = 'abc'

print('right : {:*>8}'.format(s))
# right : *****abc

print('center: {:*^8}'.format(s))
# center: **abc***

print('left  : {:*<8}'.format(s))
# left  : abc*****

Numbers can be directly formatted as well. You can perform various operations, such as converting to hexadecimal or adding zero-padding. In the case of zero-padding, it will be right-justified if the direction is omitted.

i = 255

print('right : {:08}'.format(i))
# right : 00000255

print('right : {:08x}'.format(i))
# right : 000000ff

In Python 3.6 and later, you can use f-strings for more concise formatting.

print(f'right : {i:08}')
# right : 00000255

print(f'right : {i:08x}')
# right : 000000ff

Related Categories

Related Articles