English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Einleitung
Python in 2.6 In der neuen Version wurde ein neuer String-Formatierungsansatz hinzugefügt: str.format(). Seine Grundsyntax besteht darin, {} und : anstelle der alten %. zu verwenden.
Syntax für Platzhalter bei der Formatierung:
replacement_field ::= "{" [field_name] ["!" conversion] [":" format_spec] "}"
Regel "Mapping"
Durch Position
str.format() kann unbeschränzt viele Parameter akzeptieren und die Position muss nicht geordnet sein:
>>> "{0} {1).format("hello", "welt") "hello world" >>> "{0} {1}".format("hello", "welt") "hello world" >>> "{1} {0} {1).format("hello", "welt") "welt hello world"
Durch Schlüsselwortparameter
Beim Verwenden von Schlüsselwörtern müssen die Parameternamen in der Zeichenfolge bereitgestellt werden:
>>> "Ich bin {name}, Alter ist {age}".format(name="huoty", age=18) 'I am huoty, age is 18' >>> user = {"name": "huoty", "age": 18} >>> "Ich bin {name}, Alter ist {age}".format(**user) 'I am huoty, age is 18'
通过对象属性
str.format() kann direkt auf Benutzerattribute zugreifen:
>>> class User(object): ... def __init__(self, name, age): ... self.name = name ... self.age = age ... ... def __str__(self): ... return "{self.name}({self.age})".format(self=self) ... ... def __repr__(self): ... return self.__str__() ... ... >>> user = User("huoty", 18) >>> user huoty(18) >>> "I am {user.name}, age is {user.age}".format(user=user) 'I am huoty, age is 18'
Durch Index
Innerhalb der zu formatierenden Zeichenkette können Elemente durch Index erreicht werden:
>>> names, ages = ["huoty", "esenich", "anan"], [18, 16, 8} >>> "I am {0[0]}, age is {1[2]}".format(names, ages) 'I am huoty, age is 8' >>> users = {"names": ["huoty", "esenich", "anan"], "ages": [18, 16, 8]} >>> "I am {names[0]}, age is {ages[0]}".format(**users)
Bestimmte Konvertierung
Der Typ der String-Konvertierung kann angegeben werden:
conversion ::= "r" | "s" | "a"
Dabei entspricht "!r" repr(); "!s" entspricht str(); "!a" entspricht ascii(). Beispiel:
>>> "repr() shows quotes: {!r}; str() doesn't: {!s}".format('test1', 'test2') "repr() shows quotes: 'test1'; str() doesn't: test2"
Formatierungszeichen
Füllung und Ausrichtung
Füllung wird oft zusammen mit Ausrichtung verwendet. ^, <, > stehen für Zentriert, Links ausgerichtet, Rechts ausgerichtet, gefolgt von Breite, : Zeichen steht für den Füllungscharakter, der nur ein Zeichen sein kann, wird nichts angegeben, wird standardmäßig ein Leerzeichen verwendet.
>>> "{:8".format(""181716)") ' 181716' >>> "{:08".format(""181716)") "00181716' >>> "{:->8".format(""181716)") '--181716' >>> "{:-<8".format(""181716)") '181716--' >>> "{:-^8".format(""181716)") '-181716-' >>> "{:-<25}>".format("Hier ") "Hier --------------------"
Fließkommazahl-Precision
Verwenden Sie f für den Fließkommartyp und können Sie vor ihm Präzisionskontrollen hinzufügen:
>>> "{:.2f} ]".format(321.33345) "[ 321.33 ] >>> "{:.1f} ]".format(321.33345) "[ 321.3 ] >>> "{:.4f} ]".format(321.33345) "[ 321.3335 ] >>> "{:.4f} ]".format(321) "[ 321.0000 ]'
Man kann auch für Fließkommazahlen ein Symbol angeben,+ zeigt vor positiven an +vor negativen anzeigen wird -; (Leerzeichen) bedeutet, dass ein Leerzeichen vor positiven Zahlen und vor negativen -;- Ist一致 mit Nichts Hinzufügen ({:f}):
>>> "{:+f}; {:+f}'.format(3.141592657, -3.141592657) '+3.141593; -3.141593' >>> "{: f}; {: f}".format(3.141592657, -3.141592657) ' 3.141593; -3.141593' >>> "{:f}; {:f}".format(3.141592657, -3.141592657) '3.141593; -3.141593' >>> "{:-f}; {:-f}'.format(3.141592657, -3.141592657) '3.141593; -3.141593' >>> "{:+.4f}; {:+.4f}'.format(3.141592657, -3.141592657) '+3.1416; -3.1416'
Spezifizieren Sie den Radix
>>> "int: {0:d}; hex: {0:x}; oktal: {0:o}; bin: {0:b}".format(18) "int:", 18; hex: 12; oktal: 22; bin: 10010' >>> "int: {0:d}; hex: {0:#x}; oktal: {0:#o}; bin: {0:#b}".format(18) "int:", 18; hex: 0x12; oktal: 0o22; bin: 0b10010'
Tausender-Trennzeichen
Man kann "," als Tausender-Trennzeichen verwenden:
>>> "{:,}".format(1234567890) '1,234,567,890'
Prozentsatzanzeige
>>> "fortschritt: {:.2%}".format(19.88/22) "fortschritt: 90.36%'
Tatsächlich unterstützt format noch mehr Typensymbole:
type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"
Andere Techniken
Platzhalter-Einfügen
Manchmal ist das Einfügen von Platzhaltern noch sehr nützlich:
>>> "{0:{füllen}{ausrichten}}16}'.format("hello", füllen='*', ausrichten='^') '*****hello******' >>> >>> für num in range(5,12) ... für base in "dXob": ... print("{0:{width}{base}}".format(num, base=base, width=}}5), end=' ') ... print() ... ... 5 5 5 101 6 6 6 110 7 7 7 111 8 8 10 1000 9 9 11 1001 10 A 12 1010 11 B 13 1011
Als Funktion verwenden
Man kann zunächst keine Formatierungsparameter angeben und die Funktion an anderer Stelle als Funktion aufrufen:
>>> email_f = "Ihre E-Mail-Adresse war {email}".format >>> print(email_f(email="[email protected]")) Ihre E-Mail-Adresse war [email protected]
Fluchtwort für Klammern
Wenn es erforderlich ist, Klammern in einem String zu verwenden, können Sie die Klammern als Fluchtwort verwenden:
>>> "Der {} Satz wird oft als {{0}} dargestellt ".format("leer") 'Der leere Satz wird oft als {0} dargestellt'
Zusammenfassung
Das ist der Abschluss dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels Ihnen im Lernen oder bei der Arbeit hilft. Wenn Sie Fragen haben, können Sie gerne Kommentare hinterlassen. Vielen Dank für Ihre Unterstützung der Anleitung.
Erklärung: Der Inhalt dieses Artikels wurde aus dem Internet übernommen und gehört dem jeweiligen Urheber. Der Inhalt wurde von Internetbenutzern freiwillig beigesteuert und hochgeladen. Diese Website besitzt keine Eigentumsrechte und hat den Inhalt nicht manuell bearbeitet. Sie übernimmt auch keine rechtlichen Verantwortlichkeiten. Wenn Sie verdächtige urheberrechtliche Inhalte finden, sind Sie herzlich eingeladen, eine E-Mail an notice#w zu senden.3codebox.com (Bitte ersetzen Sie # durch @ beim Senden von E-Mails und geben Sie relevante Beweise an. Sobald überprüft, wird die Website den fraglichen Inhalt sofort löschen, der urheberrechtlich verletzt wird.)