Maison >développement back-end >Tutoriel Python >Introduction détaillée au formatage des chaînes Python
Cet article vous apporte une introduction détaillée au formatage des chaînes Python. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Je crois que beaucoup de gens utilisent la syntaxe "%s" % v lors du formatage des chaînes. PEP 3101 propose une méthode de formatage plus avancée str.format() et devient la norme dans Python 3. Pour remplacer l'ancien %s. syntaxe de formatage, CPython a implémenté cette méthode depuis la 2.6 (d'autres interprètes ne l'ont pas vérifiée).
format()
La nouvelle méthode format() s'apparente en fait davantage à une version simplifiée du moteur de template (Template Engine), avec des fonctions très riches.
La variable de remplacement dans le modèle est entourée de {} et divisée en deux parties par :, dont la seconde moitié, format_spec, sera discutée séparément plus tard.
La première moitié a trois utilisations :
Ceci est cohérent avec la catégorie de paramètres des appels de fonction
print("{} {}".format("Hello", "World")) # 等同于以下几种 print("{0} {1}".format("Hello", "World")) print("{hello} {world}".format(hello="Hello", world="World")) print("{0}{1}{0}".format("H", "e")) # Hello World # Hello World # Hello World # HeH
De plus, tout comme le déballage des paramètres de fonction, l'opération de déballage peut également être utilisée directement dans format()
print("{author}.{city}".format(**{"author": "Miracle", "city": "上海"})) print("{} {}".format(*["Miracle", "上海"])) Miracle.上海 Miracle 上海
Dans le modèle, vous pouvez également obtenir les attributs ou valeursdans la variable via .identifier et [key] (à noter que "{}{}" est équivalent à "{0} {1}")
data = {'author': 'Miracle', 'like': 'papapa'} print("Author: {0[author]}, Like: {0[like]}".format(data)) langs = ["Python", "Ruby"] print("{0[0]} vs {0[1]}".format(langs)) print("\n====\nHelp(format):{.__doc__}".format(str.format)) # Name: Python, Score: 100 # Python vs Ruby # ==== # Help(format): # S.format(*args, **kwargs) -> str
Forcer la conversion, vous pouvez utiliser ! + r|s|a pour forcer la variable remplacée
Partie de la définition affichée après les deux points Le style
align représente la direction d'alignement, qui est généralement utilisée en conjonction avec la largeur, tandis que fill est le caractère rempli (la valeur par défaut est vide) :
for align, text in zip("<^>", ["left", "center", "right"]): # 务必看懂这句话 print("{:{fill}{align}16}".format(text, fill=align, align=align)) print("{:0=10}".format(100)) # = 只允许数字 # left<<<<<<<<<<<< # ^^^^^center^^^^^ # >>>>>>>>>>>right # 0000000100
Dans le même temps, on peut voir que les paramètres de style peuvent être imbriqués {}, mais doivent être spécifiés par mot-clé et ne peuvent être imbriqués qu'à un seul niveau.
Vient ensuite le style de symbole : +|-|' ' précise si le nombre nécessite un symbole obligatoire (l'espace signifie que + ne sera pas affiché lorsque le nombre est positif mais un espace sera conservé)
print("{0:+}\n{1:-}\n{0: }".format(3.14, -3.14)) # +3.14 # -3.14 # 3.14
Utilisé pour indiquer si les nombres dans des formats spéciaux (binaire, hexadécimal, etc.) nécessitent un symbole de préfixe
Les virgules sont également utilisées pour indiquer si les nombres doivent être séparés à la place des milliers
0 équivaut à l'alignement à droite {:0=} précédent et à combler les lacunes avec 0
print("Binary: {0:b} => {0:#b}".format(3)) print("Large Number: {0:} => {0:,}".format(1.25e6)) print("Padding: {0:16} => {0:016}".format(3)) # Binary: 11 => 0b11 # Large Number: 1250000.0 => 1,250,000.0 # Padding: 3 => 0000000000000003
Enfin, Xiaopang vous présentera les problèmes familiers de précision du point décimal, .n et types de formatage.
Seuls quelques exemples sont donnés ici. Pour plus de détails, veuillez vous référer à la documentation :
from math import pi print("pi = {pi:.2}, also = {pi:.7}".format(pi=pi)) # pi = 3.1, also = 3.141593
Integer
for t in "b c d #o #x #X n".split(): print("Type {0:>2} of {1} shows: {1:{t}}".format(t, 97, t=t)) # Type b of 97 shows: 1100001 # Type c of 97 shows: a # Type d of 97 shows: 97 # Type #o of 97 shows: 0o141 # Type #x of 97 shows: 0x61 # Type #X of 97 shows: 0X61 # Type n of 97 shows: 97
Float
for t, n in zip("eEfFgGn%", [12345, 12345, 1.3, 1.3, 1, 2, 3.14, 0.985]): print("Type {} shows: {:.2{t}}".format(t, n, t=t)) # Type e shows: 1.23e+04 # Type E shows: 1.23E+04 # Type f shows: 1.30 # Type F shows: 1.30 # Type g shows: 1 # Type G shows: 2 # Type n shows: 3.1 # Type % shows: 98.50%
String ( par défaut)
try: print("{:s}".format(123)) except: print("{}".format(456)) # 456
Cet article est terminé ici Pour un contenu plus passionnant, vous pouvez prêter attention à la colonne Tutoriel vidéo Python du site Web PHP chinois !
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!