Detaillierte Einführung in die String-Formatierung str.format in Python

高洛峰
Freigeben: 2017-02-20 10:03:43
Original
1540 Leute haben es durchsucht

Vorwort

Python hat in Version 2.6 eine neue Zeichenfolgenformatierungsmethode hinzugefügt: str.format() . Seine grundlegende Syntax besteht darin, das vorherige % durch {} und : zu ersetzen.

Platzhaltersyntax beim Formatieren:

replacement_field ::= "{" [field_name] ["!" conversion] [":" format_spec] "}"
Nach dem Login kopieren

“ Mapping „Regel

kann unbegrenzte Parameter über die Position

str.format() akzeptieren, und die Positionen können außer Betrieb sein:

>>> "{0} {1}".format("hello", "world")
'hello world'
>>> "{} {}".format("hello", "world")
'hello world'
>>> "{1} {0} {1}".format("hello", "world")
'world hello world'
Nach dem Login kopieren

Nach Schlüsselwortparametern

Bei Verwendung von Schlüsselparametern muss der Parametername in der Zeichenfolge angegeben werden:

>>> "I am {name}, age is {age}".format(name="huoty", age=18)
'I am huoty, age is 18'
>>> user = {"name": "huoty", "age": 18}
>>> "I am {name}, age is {age}".format(**user)
'I am huoty, age is 18'
Nach dem Login kopieren

Benutzereigenschaften können direkt über die Objekteigenschaften ausgelesen werden

str.format() :

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

Durch Subskription

Auf Elemente kann durch Subskription innerhalb der Zeichenfolge zugegriffen werden, die formatiert werden muss:

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

Konvertierung angeben

Sie können den Konvertierungstyp der Zeichenfolge angeben:

 conversion ::= "r" | "s" | "a"
Nach dem Login kopieren

Wobei „!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"
Nach dem Login kopieren

Formatqualifizierer

Padding und Ausrichtung

Padding wird oft zusammen mit der Ausrichtung verwendet. ^, <, > sind jeweils zentriert, linksbündig und rechtsbündig, gefolgt von der Breite, und das Zeichen gefolgt von: wird nur mit einem Zeichen gefüllt. Wenn nicht angegeben, wird es standardmäßig mit Leerzeichen gefüllt.

>>> "{:>8}".format("181716")
&#39; 181716&#39;
>>> "{:0>8}".format("181716")
&#39;00181716&#39;
>>> "{:->8}".format("181716")
&#39;--181716&#39;
>>> "{:-<8}".format("181716")
&#39;181716--&#39;
>>> "{:-^8}".format("181716")
&#39;-181716-&#39;
>>> "{:-<25}>".format("Here ")
&#39;Here -------------------->&#39;
Nach dem Login kopieren

Gleitkommagenauigkeit

Verwenden Sie f, um den Gleitkommatyp darzustellen, und Sie können ihn hinzufügen davor Präzisionssteuerung:

>>> "[ {:.2f} ]".format(321.33345)
&#39;[ 321.33 ]&#39;
>>> "[ {:.1f} ]".format(321.33345)
&#39;[ 321.3 ]&#39;
>>> "[ {:.4f} ]".format(321.33345)
&#39;[ 321.3335 ]&#39;
>>> "[ {:.4f} ]".format(321)
&#39;[ 321.0000 ]&#39;
Nach dem Login kopieren

Sie können auch ein Symbol für Gleitkommazahlen angeben, + bedeutet, dass + vor positiven Zahlen angezeigt wird, und - wird vor negativen Zahlen angezeigt; (Leerzeichen) bedeutet, dass vor positiven Zahlen ein Leerzeichen hinzugefügt wird und - vor negativen Zahlen - nichts hinzugefügt wird ({:f}):

>>> &#39;{:+f}; {:+f}&#39;.format(3.141592657, -3.141592657)
&#39;+3.141593; -3.141593&#39;
>>> &#39;{: f}; {: f}&#39;.format(3.141592657, -3.141592657)
&#39; 3.141593; -3.141593&#39;
>>> &#39;{:f}; {:f}&#39;.format(3.141592657, -3.141592657)
&#39;3.141593; -3.141593&#39;
>>> &#39;{:-f}; {:-f}&#39;.format(3.141592657, -3.141592657)
&#39;3.141593; -3.141593&#39;
>>> &#39;{:+.4f}; {:+.4f}&#39;.format(3.141592657, -3.141592657)
&#39;+3.1416; -3.1416&#39;
Nach dem Login kopieren

Basis angeben

>>> "int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}".format(18)
&#39;int: 18; hex: 12; oct: 22; bin: 10010&#39;
>>> "int: {0:d}; hex: {0:#x}; oct: {0:#o}; bin: {0:#b}".format(18)
&#39;int: 18; hex: 0x12; oct: 0o22; bin: 0b10010&#39;
Nach dem Login kopieren

Tausendertrennzeichen

kann verwendet werden", " als Tausendertrennzeichen:

>>> &#39;{:,}&#39;.format(1234567890)
&#39;1,234,567,890&#39;
Nach dem Login kopieren

Prozentanzeige

>>> "progress: {:.2%}".format(19.88/22)
&#39;progress: 90.36%&#39;
Nach dem Login kopieren

Tatsächlich unterstützt das Format auch weitere Typsymbole:

type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"
Nach dem Login kopieren

Weitere Tipps

Platzhalterverschachtelung

Manchmal ist die Platzhalterverschachtelung immer noch nützlich:

>>> &#39;{0:{fill}{align}16}&#39;.format("hello", fill=&#39;*&#39;, align=&#39;^&#39;)
&#39;*****hello******&#39;
>>>
>>> for num in range(5,12):
...  for base in "dXob":
...   print("{0:{width}{base}}".format(num, base=base, width=5), end=&#39; &#39;)
...  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
Nach dem Login kopieren

Wird als Funktion verwendet

Sie können es als Funktion an einer unnötigen Stelle aufrufen, ohne die Formatparameter anzugeben:

>>> email_f = "Your email address was {email}".format
>>> print(email_f(email="suodhuoty@gmail.com"))
Your email address was sudohuoty@gmail.com
Nach dem Login kopieren

Escape-Klammern

Sie können geschweifte Klammern zum Escape verwenden, wenn Sie geschweifte Klammern in einer Zeichenfolge verwenden müssen:

>>> " The {} set is often represented as { {0} } ".format("empty")
&#39; The empty set is often represented as {0} &#39;
Nach dem Login kopieren

Eine ausführlichere Einführung in die String-Formatierung str.format in Python und verwandte Artikel finden Sie auf der chinesischen PHP-Website!

Verwandte Etiketten:
Quelle:php.cn
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