Cet article vous présente principalement la syntaxe de base et l'utilisation avancée de str.format() dans la programmation python. Il est très détaillé et est accompagné d'exemples. J'espère que vous l'aimerez
1. . L'introduction de str.format
En Python, nous pouvons utiliser + pour concaténer des chaînes, ce qui fonctionne bien dans les cas simples. Mais lorsque nous devons effectuer une concaténation de chaînes complexe, si nous utilisons toujours + pour la compléter, cela rendra non seulement le code obscur, mais rendra également le code difficile à maintenir. À ce stade, cette méthode devient insuffisante.
Par exemple, nous souhaitons imprimer un tel enregistrement :
Utilisateur : John a terminé l'action : paiement à l'heure : 13:30:00
Si vous utilisez le signe plus L'implémentation se présentera sous la forme suivante :
print "User:" + user_name + " has completed Action:" + \ action_name + " at Time:" + current_time
Si nous revenons en arrière et lisons ce code dans le futur, ce sera difficile pour nous de voir intuitivement 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 les 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. Utiliser l'index positionnel
Les deux façons d'écrire suivantes sont équivalentes :
"Bonjour, {} et {}!".format("John", " Mary")
"Bonjour, {0} et {1}!".format("John", "Mary")
La chaîne cible peut être écrite à l'intérieur du bouclé accolades L'index peut également être omis. 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 du Les paramètres et le résultat final de la chaîne peuvent être vus en un 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. La maîtrise de cette méthode peut jeter une base solide pour le futur traitement des chaînes et gagner beaucoup de temps.
3.1. Accéder aux attributs ou éléments des paramètres
Lorsque nous utilisons str.format pour formater une chaîne, nous passons 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. Paramètre conversion de sortie La sortie de chaîne des paramètres
est implémentée par sa propre méthode __format__ par défaut. Autrement dit, Python utilise la sortie __format__ 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. forme générale str .format
La forme générale de la chaîne de 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 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.
< Aligné à gauche (option par défaut)
> Aligné à droite
= Uniquement valable pour les nombres ; placez des caractères de remplissage entre les symboles et les chiffres, par exemple +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)
C'est-à-dire que 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, 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
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 chiffres significatifs du chiffre p 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
Explication détaillée de php fonction d'interception intercept_str
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!