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

不言
Libérer: 2019-03-26 11:15:07
avant
2154 Les gens l'ont consulté

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
Copier après la connexion

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 上海
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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%
Copier après la connexion

String ( par défaut)

try:
   print("{:s}".format(123))
except:
   print("{}".format(456))

# 456
Copier après la connexion

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!

Étiquettes associées:
source:segmentfault.com
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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!