Maison >développement back-end >Tutoriel Python >Introduction détaillée au formatage des chaînes Python

Introduction détaillée au formatage des chaînes Python

不言
不言avant
2019-03-26 11:15:072218parcourir

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 :

  • Vide
  • Un numéro représentant la position
  • Un identifiant représentant le mot-clé

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 valeurs​​dans 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

  • "{!r}" Appelez repr( ) sur la variable
  • "{!s}" Appelez str()
  • "{!a}" sur la variable Appelez ascii()

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer