Detaillierte Einführung in die Python-String-Formatierung

不言
Freigeben: 2019-03-26 11:15:07
nach vorne
2158 Leute haben es durchsucht

Dieser Artikel bietet Ihnen eine detaillierte Einführung in die Formatierung von Python-Strings. Ich hoffe, dass er für Sie hilfreich ist.

Ich glaube, dass viele Leute beim Formatieren von Zeichenfolgen die Syntax „%s“ % v verwenden. PEP 3101 schlägt eine erweiterte Formatierungsmethode str.format() vor und wird zum Standard in Python 3. Um das alte %s zu ersetzen Aufgrund der Formatierungssyntax hat CPython diese Methode seit 2.6 implementiert (andere Interpreter haben sie nicht überprüft).

format()

Die neue format()-Methode ähnelt eigentlich eher einer vereinfachten Version der Template-Engine (Template Engine) mit sehr umfangreichen Funktionen.

Die Ersetzungsvariable in der Vorlage ist von {} umgeben und durch : in zwei Teile geteilt, von denen die zweite Hälfte, format_spec, später separat besprochen wird.

Die erste Hälfte hat drei Verwendungszwecke:

  • Leer
  • Eine Zahl, die die Position darstellt
  • Eine Kennung, die das Schlüsselwort darstellt

Dies steht im Einklang mit der Parameterkategorie von Funktionsaufrufen

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
Nach dem Login kopieren

Darüber hinaus kann der Entpackvorgang ebenso wie das Entpacken von Funktionsparametern auch direkt in format()

print("{author}.{city}".format(**{"author": "Miracle", "city": "上海"}))
print("{} {}".format(*["Miracle", "上海"]))

Miracle.上海
Miracle 上海
Nach dem Login kopieren
In der Vorlage können Sie die Attribute oder Werte in der Variablen auch über .identifier und [key] abrufen (es ist zu beachten, dass „{}{}“ äquivalent zu „{0}{1}“ ist)

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
Nach dem Login kopieren
Konvertierung erzwingen, Sie können die ersetzte Variable durch ! + r|s|a

    "{!r}" erzwingen. Rufen Sie repr() für die Variable auf
  • " {!s}" Rufen Sie str()
  • "{!a}" für die Variable auf und rufen Sie ascii() auf
Der Teil nach dem Doppelpunkt definiert den Ausgabestil

align stellt die Ausrichtungsrichtung dar, die normalerweise in Verbindung mit width verwendet wird, und fill ist das Füllzeichen (Standard ist leer):

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
Nach dem Login kopieren
Gleichzeitig ist ersichtlich, dass {} dies kann kann in der Stileinstellung verschachtelt werden, es muss jedoch ein angegebenes Schlüsselwort übergeben werden und kann nur auf einer Ebene verschachtelt werden.

Als nächstes folgt der Symbolstil: +|-|' ' gibt an, ob die Zahl ein obligatorisches Symbol erfordert (das Leerzeichen bedeutet, dass + nicht angezeigt wird, wenn die Zahl positiv ist, aber ein Leerzeichen beibehalten wird)

print("{0:+}\n{1:-}\n{0: }".format(3.14, -3.14))

# +3.14
# -3.14
# 3.14
Nach dem Login kopieren
Ob ein Präfixsymbol erforderlich ist, um Zahlen in speziellen Formaten darzustellen (binär, hexadezimal usw.)

Komma wird auch verwendet, um Zahlen darzustellen, ob sie an der Tausenderstelle getrennt werden müssen

0 Äquivalent Richten Sie das vorherige {:0=} rechtsbündig aus und füllen Sie die Lücken mit 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
Nach dem Login kopieren
Abschließend stellt Ihnen Xiaopang die bekannten Probleme mit der Genauigkeit von Dezimalstellen, .n und Formatierungstypen vor.

Hier werden nur einige Beispiele aufgeführt. Weitere Informationen finden Sie in der Dokumentation:

from math import pi
print("pi = {pi:.2}, also = {pi:.7}".format(pi=pi))

# pi = 3.1, also = 3.141593
Nach dem Login kopieren
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
Nach dem Login kopieren
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%
Nach dem Login kopieren
String (Standard)

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

# 456
Nach dem Login kopieren
Dieser Artikel ist hier zu Ende. Weitere spannende Inhalte finden Sie in der Spalte

Python-Video-Tutorial auf der chinesischen PHP-Website!

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die Python-String-Formatierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:segmentfault.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!