Home » Python

Python String formatting: % vs. .format

String formatting in Python: % vs. .format: Here, we are going to learn how to format a string in Python using % and .format?
Submitted by Sapna Deraje Radhakrishna, on December 18, 2019

Often the string formatters in python are referred to as old style and new style. The old-style is '%' and .format is known as the new style.

Simple positional formatting is the most common use-case. This formatting is used if the order of the arguments is not likely to change and there are very few elements to be concatenated.

Example:

# string concatenation using %
print('%s %s'%('one','two'))

# string concatenation using .format
print('{} {}'.format('one','two'))

Output

one two
one two

With the new style formatting, it is possible to give placeholders an explicit positional index. This allows for rearranging the order of display without changing the arguments. This feature is not available in the old style.

Example:

print('{0} {1}'.format('one','two'))
print('{1} {0}'.format('one','two'))

Output

one two
two one

Padding and aligning strings

By default, values are formatted to take up only as many characters as needed to represent the content. It is, however, possible to define that a value should be padded to a specific length.

Example:

print('%10s'%('test'))
print('{:>10}'.format('test'))

Output

      test
      test

Truncating long strings

It is also possible to truncate overly long values to a specific number of characters. The number behind a . (dot) in the format specifies the precision of the output. For strings that means that the output is truncated to the specified length. In our example, this would be 3 characters.

Example:

print('%.3s'%('includehelp',))
print('{:.3}'.format('includehelp'))

Output

inc
inc

Numbers

Example:

print('%d' %(10000))
print('{:d}' .format(10000))

Output

10000
10000

Parametrized formats

New style formatting allows all of the components of the format to be specified dynamically using parametrization. Parametrized formats are nested expressions in braces that can appear anywhere in the parent format after the colon. Old style formatting also supports some parametrization but is much more limited. Namely, it only allows parametrization of the width and precision of the output.

Example:

from datetime import datetime
dt = datetime(2019, 12, 19, 4, 5)
print('{:{dfmt} {tfmt}}'.format(dt, dfmt='%Y-%m-%d', tfmt='%H:%M'))

Output

2019-12-19 04:05

Custom Objects

The datetime example works through the use of the __format__() magic method. However, one defines custom format handling in own objects by overriding this method. This gives complete control over the format syntax used.

Example:

class Type2000(object):
  def __format__(self, format):
    if (format == 'test-format'):
      return "This is format example for include help."
    return 'Type 2000'

print('{:test-format}'.format(Type2000()))

Output

This is format example for include help.


Comments and Discussions!

Load comments ↻





Copyright © 2024 www.includehelp.com. All rights reserved.