More is less

Python format : % ou .format()

Pour formater l'affichage la vieille méthode utilisant % est remplacée par la méthode .format(). Le but de cet article est de faciliter le passage de l'ancienne méthode à la nouvelle.

Source : PyFormat

  1. Formatage de base
  2. Alignement et remplissage
  3. Nombres
  4. Dates temps
  5. Valeurs
  6. Formatage parémétré

Formatage de base

Méthode % : '%s %2.1f' % ('python', 3.5) #2 chiffres, 1 décimale

Méthode .format() : '{} {:2.1f}'.format('python', 3.5)

Résultat : python 3.5

Conversions

On peut faire appels aux conversions avec str() ou avec repr.

Méthode % : '%s' % ("python") ; '%r' % ("python")

Méthode .format() ; '{!s}'.format("python") ; '{!r}'.format("python")

Résultat : 'python' ; "'python'"

Note: str est la conversion pour l'affichage usuel, alors que repr est la conversion pour l'affichage à l'usage du programmeur.

Table des matières

Alignement et remplissage

Alignement à droite

Méthode % : '%8s' % ('python')

Méthode .format() : '{:>8}'.format('python')

Résultat :   python

Remplissage à droite

Méthode % : '%-8s' % ('python')

Méthode .format() : '{:8}'.format('python')

Résultat : python  

Le remplissage par des caractères autre que l'espace est une nouveauté.

Méthode .format() : '{:*>8}'.format('python')

Résultat : **python

De même le centrage n'existait pas dans l'ancienne méthode.

Méthode .format() : '{:^8}'.format('python')

Résultat :  python 

Troncature de longues chaines

Méthode % : '%.3s' %('mercredi')

Méthode .format() : '{:.3}'.format('mercredi')

Résultat : mer

On peut combiner troncature et remplissage.

Méthode % : '%-6.3s' % ('mercredi')

Méthode .format() : '{:6.3}'.format('mercredi')

Résultat : mer   '%-6.3s' % ('mercredi');

Table des matières

Nombres

Méthode % : '%d' % (27, ) # marche avec 27.2

Méthode .format() : '{:d}'.format(27,) # ne marche qu'avec des entiers

Résultat : 27

Nombre de décimales

Méthode % : '%.2f' % (2.71828)

Méthode .format() : '{:.2f}'.format(2.71828)

Résultat : 2.72 Le résultat est arrondi au plus près

Remplissage pour les nombres

C'est comme avec le texte.

Méthode % : '%02d/%02d' % (2,9)

Méthode .format() : '{:02d}/{:02d}'.format(2, 9)

Résultat : 02/09

Signes

Par défaut seul le signe - est mis.

Méthode % : '%+d°' % (19,)

Méthode .format() : '{:+d}°'.format(19)

Résultat : +19°

Signe et remplissage

Le signe peut être placé au début du remplissage.

Méthode .format() : '{:=+3d} ; {:=+3d}'.format(7,-2)

Résultat : + 7 ; - 2 le signe compte pour un emplacement

Table des matières

Dates temps

Avec le code suivant :

from datetime import datetime
d = '{:%Y-%m-%d %H:%M}'.format(datetime(2001, 2, 3, 4, 5))
print(d)

Résultat : 2001-02-03 04:05

Table des matières

Valeurs

week = ['lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi', 'dimanche']
print('ouvert {w[2]} et {w[5]}'.format(w=week))

Résultat :

ouvert mercredi et samedi

Table des matières

Formatage parémétré

On peut même paramétrer le formatage. Exemple :

Code : '{:{align}{width}}'.format('test', align='^', width='10')

Résultat :    test   

Méthode % : '%.*s = %.*f' % (3, 'charabia', 3, 2.71828)

Méthode .format() : '{:.{pr}} = {:.{pr}f}'.format('charabia', 2.71828, pr=3)

Résultat : cha = 2.718

Table des matières


Réalisé avec Qlam - LGPL