Maison > développement back-end > Tutoriel Python > Existe-t-il un moyen de formater une chaîne en Python ? (Introduction comparative)

Existe-t-il un moyen de formater une chaîne en Python ? (Introduction comparative)

不言
Libérer: 2018-09-25 16:18:00
original
1602 Les gens l'ont consulté

Ce que cet article vous apporte, c'est quelles sont les méthodes de formatage des chaînes en Python ? (Introduction comparative), il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.

% ou format

1. Imperial City PK

Il existe actuellement deux camps pour le formatage des chaînes en Python : % et format.

Depuis que Python 2.6 a introduit la méthode format pour formater les chaînes, je pense que % ou format n'est pas du tout un problème. Si vous ne me croyez pas, baissez les yeux.

# 定义一个坐标值
c = (250, 250)
# 使用%来格式化
s1 = "敌人坐标:%s" % c
Copier après la connexion

Le code ci-dessus lancera évidemment une TypeError comme suit :

TypeError : tous les arguments ne sont pas convertis lors du formatage de la chaîne

Pour des exigences de formatage comme celle-ci, nous devons l'écrire dans le format laid suivant :

# 定义一个坐标值
c = (250, 250)
# 使用%丑陋的格式化...
s1 = "敌人坐标:%s" % (c,)
Copier après la connexion

L'utilisation du format n'aura pas les problèmes ci-dessus :

# 定义一个坐标值
c = (250, 250)
# 使用format格式化
s2 = "敌人坐标:{}".format(c)
Copier après la connexion

Évidemment, le La raison ci-dessus est suffisante pour que vous puissiez utiliser le format dans de futurs projets.

2. Nouvelles fonctionnalités

Ajout des f-strings dans Python3.6 :

In[1]: name = "djb"
In[2]: age = 18
In[3]: f"My name is {name}.I'm {age}"
Out[3]: "My name is djb.I'm 18"
Copier après la connexion

Utilisation du format courant

1.

In[1]: data = ["djb", 18]
In[2]: "Name:{0}, Age:{1}".format(*data)
Out[2]: 'Name:djb, Age:18'
Copier après la connexion
2. Via des mots-clés

In[1]: data = {"name": "djb", "age": 18}
In[2]: "Name:{name}, Age:{age}".format(**data)
Out[2]: 'Name:djb, Age:18'
Copier après la connexion
3. Via les attributs d'objet

In[1]: class Person(object):
   ...:     def __init__(self, name, age):
   ...:         self.name = name
   ...:         self.age = age
   ...:     def __str__(self):      
   ...:         return "This guy is {self.name}, {self.age} years old.".format(self=self)
   ...:     
In[2]: p = Person("djb", 18)
In[3]: str(p)
Out[3]: 'This guy is djb, 18 years old.'
Copier après la connexion
4. Via les indices

In[1]: "{0[0]} is {0[1]} years old.".format(data)
Out[1]: 'djb is 18 years old.'
Copier après la connexion
5. alignement

Le remplissage est souvent utilisé avec l'alignement

^, <, > sont respectivement centrés, alignés à gauche et alignés à droite, suivis de la largeur

Le caractère de remplissage après le signe : ne peut contenir qu'un seul caractère s'il n'est pas spécifié, il sera rempli d'espaces par défaut.

In[1]: "{:>10}".format(&#39;18&#39;)
Out[1]: &#39;        18&#39;In[2]: "{:0>10}".format(&#39;18&#39;)
Out[2]: &#39;0000000018&#39;In[3]: "{:A>10}".format(&#39;18&#39;)
Out[3]: &#39;AAAAAAAA18
Copier après la connexion
Ajoutez une méthode zfill() fournie avec une chaîne :

La méthode Python zfill() renvoie une chaîne de longueur spécifiée. La chaîne d'origine est alignée à droite et remplie avec. Des 0 devant.

Syntaxe de la méthode zfill() : str.zfill(width)

Le paramètre width spécifie la longueur de la chaîne. La chaîne d'origine est alignée à droite et complétée par des zéros devant.

Renvoie une chaîne de longueur spécifiée.

In[1]: "18".zfill(10)
Out[1]: &#39;0000000018&#39;
Copier après la connexion
6. Précision et type f

La précision est souvent utilisée avec le type f.

In[1]: "{:.2f}".format(3.1415926)
Out[1]: &#39;3.14&#39;
Copier après la connexion
où .2 représente la précision de la longueur 2 et f représente le type float.

7. Autres systèmes de base

Principalement les systèmes de base, b, d, o, x sont respectivement binaires, décimaux, octaux et hexadécimaux.

In[1]: "{:b}".format(18)
Out[1]: &#39;10010&#39;In[2]: "{:d}".format(18)
Out[2]: &#39;18&#39;In[3]: "{:o}".format(18)
Out[3]: &#39;22&#39;In[4]: "{:x}".format(18)
Out[4]: &#39;12&#39;
Copier après la connexion
8. Milliers séparateurs

In[1]: "{:,}".format(1234567890)
Out[1]: &#39;1,234,567,890&#39;
Copier après la connexion
Enfin, pour résumer, il vaut mieux utiliser le format que % en comparaison, mais chacun a un usage différent, nous listons ici juste quelques avantages de format par rapport à %.

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!

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal