Maison développement back-end Tutoriel Python Introduction détaillée au formatage de chaîne str.format en Python

Introduction détaillée au formatage de chaîne str.format en Python

Feb 20, 2017 am 10:03 AM

Préface

Python a ajouté une nouvelle méthode de formatage de chaîne dans la version 2.6 : str.format() . Sa syntaxe de base consiste à remplacer le % précédent par {} et :.

Syntaxe des espaces réservés lors du formatage :

1

replacement_field ::= "{" [field_name] ["!" conversion] [":" format_spec] "}"

Copier après la connexion

" mappage "Règle

peut accepter des paramètres illimités via la position

str.format() , et les positions peuvent être dans le désordre :

1

2

3

4

5

6

>>> "{0} {1}".format("hello", "world")

'hello world'

>>> "{} {}".format("hello", "world")

'hello world'

>>> "{1} {0} {1}".format("hello", "world")

'world hello world'

Copier après la connexion

Par paramètres de mot-clé

Lors de l'utilisation de paramètres clés, le nom du paramètre doit être fourni dans la chaîne :

1

2

3

4

5

>>> "I am {name}, age is {age}".format(name="huoty", age=18)

'I am huoty, age is 18'

>>> user = {"name": "huoty", "age": 18}

>>> "I am {name}, age is {age}".format(**user)

'I am huoty, age is 18'

Copier après la connexion

Les propriétés de l'utilisateur peuvent être lues directement via les propriétés de l'objet

str.format()  :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

>>> class User(object):

...  def __init__(self, name, age):

...   self.name = name

...   self.age = age

...  

...  def __str__(self):

...   return "{self.name}({self.age})".format(self=self)

... 

...  def __repr__(self):

...   return self.__str__()

... 

...

>>> user = User("huoty", 18)

>>> user

huoty(18)

>>> "I am {user.name}, age is {user.age}".format(user=user)

'I am huoty, age is 18'

Copier après la connexion

Par indice

Les éléments sont accessibles en indice à l'intérieur de la chaîne qui doit être formatée :

1

2

3

4

5

>>> names, ages = ["huoty", "esenich", "anan"], [18, 16, 8]

>>> "I am {0[0]}, age is {1[2]}".format(names, ages)

'I am huoty, age is 8'

>>> users = {"names": ["huoty", "esenich", "anan"], "ages": [18, 16, 8]}

>>> "I am {names[0]}, age is {ages[0]}".format(**users)

Copier après la connexion

Spécifier la conversion

Vous pouvez spécifier le type de conversion de la chaîne :

1

conversion ::= "r" | "s" | "a"

Copier après la connexion

Où "!r" correspond à repr(); "!s" correspond à str(); "!a" correspond à ascii(). Exemple :

1

2

>>> "repr() shows quotes: {!r}; str() doesn't: {!s}".format('test1', 'test2')

"repr() shows quotes: 'test1'; str() doesn't: test2"

Copier après la connexion

Qualificateurs de format

Remplissage et alignement

Le rembourrage est souvent utilisé avec l'alignement. ^, <, > sont respectivement centrés, alignés à gauche et alignés à droite, suivis de la largeur, et le caractère suivi de : est rempli d'un seul caractère. S'il n'est pas spécifié, il sera rempli d'espaces par défaut.

1

2

3

4

5

6

7

8

9

10

11

12

&gt;&gt;&gt; &quot;{:&gt;8}&quot;.format(&quot;181716&quot;)

&#39; 181716&#39;

&gt;&gt;&gt; &quot;{:0&gt;8}&quot;.format(&quot;181716&quot;)

&#39;00181716&#39;

&gt;&gt;&gt; &quot;{:-&gt;8}&quot;.format(&quot;181716&quot;)

&#39;--181716&#39;

&gt;&gt;&gt; &quot;{:-&lt;8}&quot;.format(&quot;181716&quot;)

&#39;181716--&#39;

&gt;&gt;&gt; &quot;{:-^8}&quot;.format(&quot;181716&quot;)

&#39;-181716-&#39;

&gt;&gt;&gt; &quot;{:-&lt;25}&gt;&quot;.format(&quot;Here &quot;)

&#39;Here --------------------&gt;&#39;

Copier après la connexion

Précision à virgule flottante

Utilisez f pour représenter le type à virgule flottante, et vous pouvez l'ajouter devant lui Contrôle de précision :

1

2

3

4

5

6

7

8

&gt;&gt;&gt; &quot;[ {:.2f} ]&quot;.format(321.33345)

&#39;[ 321.33 ]&#39;

&gt;&gt;&gt; &quot;[ {:.1f} ]&quot;.format(321.33345)

&#39;[ 321.3 ]&#39;

&gt;&gt;&gt; &quot;[ {:.4f} ]&quot;.format(321.33345)

&#39;[ 321.3335 ]&#39;

&gt;&gt;&gt; &quot;[ {:.4f} ]&quot;.format(321)

&#39;[ 321.0000 ]&#39;

Copier après la connexion

Vous pouvez également spécifier un symbole pour les nombres à virgule flottante, ce qui signifie afficher avant les nombres positifs et - avant les nombres négatifs ; (espace) signifie afficher avant les nombres positifs Ajouter un espace avant un nombre, ajouter - avant un nombre négatif - est cohérent avec ne rien ajouter ({:f}):

1

2

3

4

5

6

7

8

9

10

&gt;&gt;&gt; &#39;{:+f}; {:+f}&#39;.format(3.141592657, -3.141592657)

&#39;+3.141593; -3.141593&#39;

&gt;&gt;&gt; &#39;{: f}; {: f}&#39;.format(3.141592657, -3.141592657)

&#39; 3.141593; -3.141593&#39;

&gt;&gt;&gt; &#39;{:f}; {:f}&#39;.format(3.141592657, -3.141592657)

&#39;3.141593; -3.141593&#39;

&gt;&gt;&gt; &#39;{:-f}; {:-f}&#39;.format(3.141592657, -3.141592657)

&#39;3.141593; -3.141593&#39;

&gt;&gt;&gt; &#39;{:+.4f}; {:+.4f}&#39;.format(3.141592657, -3.141592657)

&#39;+3.1416; -3.1416&#39;

Copier après la connexion

Spécifier la base

1

2

3

4

&gt;&gt;&gt; &quot;int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}&quot;.format(18)

&#39;int: 18; hex: 12; oct: 22; bin: 10010&#39;

&gt;&gt;&gt; &quot;int: {0:d}; hex: {0:#x}; oct: {0:#o}; bin: {0:#b}&quot;.format(18)

&#39;int: 18; hex: 0x12; oct: 0o22; bin: 0b10010&#39;

Copier après la connexion

Séparateur de milliers

Vous pouvez utiliser "," pour séparer les milliers :

1

2

&gt;&gt;&gt; &#39;{:,}&#39;.format(1234567890)

&#39;1,234,567,890&#39;

Copier après la connexion

Affichage du pourcentage

1

2

&gt;&gt;&gt; &quot;progress: {:.2%}&quot;.format(19.88/22)

&#39;progress: 90.36%&#39;

Copier après la connexion

En fait, le format prend également en charge davantage de symboles de type :

1

type ::= &quot;b&quot; | &quot;c&quot; | &quot;d&quot; | &quot;e&quot; | &quot;E&quot; | &quot;f&quot; | &quot;F&quot; | &quot;g&quot; | &quot;G&quot; | &quot;n&quot; | &quot;o&quot; | &quot;s&quot; | &quot;x&quot; | &quot;X&quot; | &quot;%&quot;

Copier après la connexion

Autre conseils

Imbrication d'espaces réservés

Parfois, l'imbrication d'espaces réservés est toujours utile :

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

&gt;&gt;&gt; &#39;{0:{fill}{align}16}&#39;.format(&quot;hello&quot;, fill=&#39;*&#39;, align=&#39;^&#39;)

&#39;*****hello******&#39;

&gt;&gt;&gt;

&gt;&gt;&gt; for num in range(5,12):

...  for base in &quot;dXob&quot;:

...   print(&quot;{0:{width}{base}}&quot;.format(num, base=base, width=5), end=&#39; &#39;)

...  print()

... 

...

 5  5  5 101

 6  6  6 110

 7  7  7 111

 8  8 10 1000

 9  9 11 1001

 10  A 12 1010

 11  B 13 1011

Copier après la connexion

Utilisé comme fonction

Vous ne pouvez pas spécifier les paramètres de format en premier, mais l'appeler comme fonction à un endroit inutile :

1

2

3

&gt;&gt;&gt; email_f = &quot;Your email address was {email}&quot;.format

&gt;&gt;&gt; print(email_f(email=&quot;suodhuoty@gmail.com&quot;))

Your email address was sudohuoty@gmail.com

Copier après la connexion

Accolades d'échappement

Lorsque vous devez utiliser des accolades dans une chaîne, vous pouvez utiliser des accolades pour échapper :

1

2

&gt;&gt;&gt; &quot; The {} set is often represented as { {0} } &quot;.format(&quot;empty&quot;)

&#39; The empty set is often represented as {0} &#39;

Copier après la connexion

Pour une introduction plus détaillée au formatage de chaîne str.format en Python et aux articles connexes, veuillez faire attention au site Web PHP chinois !

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment utiliser la belle soupe pour analyser HTML? Comment utiliser la belle soupe pour analyser HTML? Mar 10, 2025 pm 06:54 PM

Comment utiliser la belle soupe pour analyser HTML?

Comment utiliser Python pour trouver la distribution ZIPF d'un fichier texte Comment utiliser Python pour trouver la distribution ZIPF d'un fichier texte Mar 05, 2025 am 09:58 AM

Comment utiliser Python pour trouver la distribution ZIPF d'un fichier texte

Filtrage d'image en python Filtrage d'image en python Mar 03, 2025 am 09:44 AM

Filtrage d'image en python

Comment effectuer l'apprentissage en profondeur avec TensorFlow ou Pytorch? Comment effectuer l'apprentissage en profondeur avec TensorFlow ou Pytorch? Mar 10, 2025 pm 06:52 PM

Comment effectuer l'apprentissage en profondeur avec TensorFlow ou Pytorch?

Introduction à la programmation parallèle et simultanée dans Python Introduction à la programmation parallèle et simultanée dans Python Mar 03, 2025 am 10:32 AM

Introduction à la programmation parallèle et simultanée dans Python

Sérialisation et désérialisation des objets Python: partie 1 Sérialisation et désérialisation des objets Python: partie 1 Mar 08, 2025 am 09:39 AM

Sérialisation et désérialisation des objets Python: partie 1

Comment implémenter votre propre structure de données dans Python Comment implémenter votre propre structure de données dans Python Mar 03, 2025 am 09:28 AM

Comment implémenter votre propre structure de données dans Python

Modules mathématiques en python: statistiques Modules mathématiques en python: statistiques Mar 09, 2025 am 11:40 AM

Modules mathématiques en python: statistiques

See all articles