Maison >développement back-end >Tutoriel Python >Explication détaillée de str.format() en Python

Explication détaillée de str.format() en Python

高洛峰
高洛峰original
2017-03-13 09:22:242536parcourir

Cet article vous présente principalement en détail la syntaxe de base et l'utilisation avancée de str.format() en pythonProgrammation Il est très détaillé et est accompagné d'exemples, je l'espère. vous pouvez aimer

1. L'introduction de str.format

En Python, on peut utiliser pour connecterstring, en simple cas Cette méthode peut très bien fonctionner. Mais lorsque nous devons effectuer une concaténation de chaînes complexe, si nous l'utilisons toujours pour la compléter, cela rendra non seulement le code obscur et difficile à comprendre, mais rendra également le code difficile à maintenir. À ce stade, cette méthode devient insuffisante.

Par exemple, nous souhaitons imprimer un enregistrement comme celui-ci :

Utilisateur : John a terminé Action : paiement à Heure : 13 : 30 :00

Si vous utilisez le signe plus, il sera sous la forme suivante :


print "User:" + user_name + " has completed Action:" + \ 
      action_name + " at Time:" + current_time

Si l'on revient en arrière et lis ce code à l'avenir, nous Il est difficile de voir visuellement son format de sortie, et il est relativement difficile à modifier.

Nous pouvons utiliser % à la place :


print "User:%s has completed Action:%s at Time:%s" % \ 
    (user_name, action_name, current_time)

Cette fois, le code devient beaucoup plus clair et concis.

Cependant, Python nous propose une autre méthode d'implémentation simple et élégante, qui est également la méthode la plus officiellement recommandée : utilisez str.format() pour formater les chaînes :


print "User:{} has completed Action:{} at Time:{}".format( 
    user_name, action_name, current_time)

str.format peut être utilisé dans des scénarios simples et est également capable de remplacer des chaînes complexes sans opérations fastidieuses de concaténation de chaînes. Les types intégrés str et unicode de Python prennent tous deux en charge l'utilisation de str.format() pour formater des chaînes.

Nous discuterons ensuite en détail de l’utilisation spécifique de str.format().

2. Syntaxe de base de str.format

La chaîne de format utilise des accolades {} pour entourer le champ de remplacement, qui est la chaîne à remplacer. . Les caractères non entourés d’accolades apparaîtront intacts dans le résultat.

2.1. Utilisation de l'index positionnel

Les deux manières d'écrire suivantes sont équivalentes :

"Bonjour, {} et {}!".format ("John", "Mary")

"Bonjour, {0} et {1}!".format("John", "Mary")

Entre accolades Vous pouvez écrire l'index de la chaîne cible ou l'omettre. En cas d'omission, le remplacement est effectué dans l'ordre des chaînes cibles entourées de crochets de format.

2.2. Utilisation de l'index de mots-clés

En plus de spécifier la chaîne cible par position, nous pouvons également la spécifier par mot-clé.

Par exemple :


"Hello, {boy} and {girl}!".format(boy="John", girl="Mary")

L'avantage d'utiliser l'index de mots-clés est que nous n'avons pas besoin de nous soucier de la position des paramètres, et le résultat final de la chaîne peut être vu d'un seul coup d'œil. Lors de la future maintenance du code, nous pourrons modifier rapidement les paramètres correspondants sans avoir à rechercher les paramètres correspondants un par un dans la chaîne.

Remarque : Si la chaîne elle-même contient des accolades, elles doivent être échappées en les répétant deux fois. Par exemple, si la chaîne elle-même contient {, pour faire savoir à Python qu'il s'agit d'un caractère normal et non des accolades utilisées pour entourer un champ de remplacement, nous la réécrivons simplement sous la forme {{.

3. La syntaxe avancée str.format

str.format est très puissante et suffisamment puissante pour compléter la sortie formatée rencontrée dans le travail quotidien . Maîtriser cette méthode peut jeter une base solide pour le futur traitement des chaînes et gagner beaucoup de temps.

3.1. Accéder à l'attribut ou à l'élément du paramètre

Lorsque nous utilisons str.format pour formater une chaîne, nous transmettons généralement la chaîne cible en tant que paramètre à la méthode de format . En fait, on peut également accéder à un attribut ou un élément du paramètre dans la chaîne de format :

"Ma voiture est {0.color}.".format(black_car)
"Le premier élève est {student[0]}.".format(student=stu_list)
"John a {d[john]} ans.".format(d=age_dict)

3.2. Conversion de la sortie des paramètres

La sortie de chaîne des paramètres est implémentée par sa propre méthode de format par défaut. Autrement dit, Python utilise le format de sortie du paramètre à la place du champ de remplacement. Si nous voulons appeler str() ou repr() pour convertir des paramètres, nous pouvons le faire en ajoutant l'indicateur de conversion :


# call str() on argument
"It's a {0!s}."

#call repr() on argument
"We can get info from {name!r}."

4. .format Général La forme générale du format

est la suivante :

"... {field_name!conversion:format_spec}..."

Comme vous pouvez le voir dans le code ci-dessus, la chaîne de format peut être divisée en trois parties : field_name, conversion et format_spec, qui correspondent respectivement au nom du champ de remplacement (index), à l'indicateur de conversion et à la description du format. Parmi eux, le nom du champ est obligatoire, tandis que les deux derniers sont facultatifs. L'indicateur de conversion suit le point d'exclamation et la description du format suit les deux points.

Comme mentionné précédemment, le nom du champ peut être soit un index de position, soit un index de mots-clés. Les noms de champs peuvent être suivis de points pour accéder aux attributs ou de crochets pour accéder aux éléments.

Ici, nous nous concentrons sur la description du format (format_spec).

La description du format contient 6 options, à savoir remplir, aligner, signer, largeur, précision et type. Leur relation de position est la suivante :

[[fill]align][sign][#][0][width][,][.precision][type]
fill
peut être n'importe quel caractère, la valeur par défaut est l'espace.

align
n'est valide que lorsqu'une largeur minimale est spécifiée.

399389dcbfcb88f485135f65e04aeca5 Aligné à droite
= Uniquement valide pour les nombres ; placez des caractères de remplissage entre les symboles et les nombres, tels que 0001234
^ Aligné au centre
signe
Valable uniquement pour les nombres

Tous les nombres sont signés
- seuls les nombres négatifs sont signés (option par défaut)
Autrement dit, les nombres positifs sont précédés d'un espace, et les nombres négatifs sont précédés d'un signe
'#'
Valable uniquement pour les entiers

Ajoutez automatiquement les 0b, 0o et 0x correspondants avant les valeurs binaires, octales et hexadécimales.

','
Ajoute automatiquement un séparateur , entre tous les trois nombres.

largeur
Nombre décimal, définissant la largeur minimale. S'il n'est pas spécifié, il est déterminé par la largeur du contenu.

Si l'alignement n'est pas spécifié, vous pouvez ajouter un 0 devant la largeur pour remplir automatiquement 0, ce qui équivaut à définir le remplissage sur 0 et à aligner sur =. La

précision
est utilisée pour déterminer la précision des nombres à virgule flottante, ou la longueur maximale d'une chaîne. Non disponible pour les valeurs entières.

type
détermine le type de paramètre, la valeur par défaut est s, qui est une chaîne.

Type de sortie entier :

b : Sortie au format binaire
c : Convertir l'entier en caractère Unicode correspondant
d : Sortie en décimal (option par défaut)
o : Sortie en octal
x : Sortie en minuscules hexadécimales
Nombre

Type de sortie de nombre à virgule flottante décimale :

e : sortie d'exposant utilisant la notation scientifique ; , utilisez e pour représenter la partie exposant, la précision par défaut est 6

E : et e est le même, mais utilise un E majuscule pour représenter la partie exposant
f : affiche la valeur sous forme de virgule fixe, le la précision par défaut est 6
F : identique à f
g : format général ; pour une précision donnée p > = 1, prenez les p chiffres significatifs de la valeur et affichez-les en virgule fixe ou notation scientifique (option par défaut)
G : format général ; identique à g, utilisez E pour représenter la partie exposant lorsque la valeur est trop grande
n : Identique à g, mais utilise le délimiteur de l'environnement actuel pour séparez chaque nombre à 3 chiffres
 % : marque de pourcentage ; utilisez le formulaire de pourcentage pour afficher la valeur et définissez la marque f

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
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