Gibt es eine Möglichkeit, eine Zeichenfolge in Python zu formatieren? (Vergleichende Einführung)

不言
Freigeben: 2018-09-25 16:18:00
Original
1577 Leute haben es durchsucht

In diesem Artikel erfahren Sie, welche Methoden es zum Formatieren von Zeichenfolgen in Python gibt. (Vergleichende Einführung), es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen.

% oder Format

1. Imperial City PK

Es gibt derzeit zwei Lager für die Formatierung von Zeichenfolgen in Python: % und Format Welches sollten wir wählen?

Seit Python 2.6 die Formatmethode zum Formatieren von Zeichenfolgen eingeführt hat, sind % oder Format meiner Meinung nach überhaupt kein Problem mehr. Wenn Sie mir nicht glauben, schauen Sie nach unten.

# 定义一个坐标值
c = (250, 250)
# 使用%来格式化
s1 = "敌人坐标:%s" % c
Nach dem Login kopieren

Der obige Code löst offensichtlich den folgenden TypeError aus:

TypeError: not all arguments Converted while String Formatting

Für Formatierungsanforderungen wie diese müssen wir es in dem folgenden hässlichen Format schreiben:

# 定义一个坐标值
c = (250, 250)
# 使用%丑陋的格式化...
s1 = "敌人坐标:%s" % (c,)
Nach dem Login kopieren

Bei Verwendung des Formats tritt das oben genannte Problem nicht auf:

# 定义一个坐标值
c = (250, 250)
# 使用format格式化
s2 = "敌人坐标:{}".format(c)
Nach dem Login kopieren

Offensichtlich reicht Ihnen der oben genannte Ein Grund aus um das Format in zukünftigen Projekten zu verwenden.

2. Neue Funktionen

F-Strings in Python3.6 hinzugefügt:

In[1]: name = "djb"
In[2]: age = 18
In[3]: f"My name is {name}.I'm {age}"
Out[3]: "My name is djb.I'm 18"
Nach dem Login kopieren

Gemeinsame Formatverwendung

Nach Position

In[1]: data = ["djb", 18]
In[2]: "Name:{0}, Age:{1}".format(*data)
Out[2]: 'Name:djb, Age:18'
Nach dem Login kopieren

2. Nach Schlüsselwort

In[1]: data = {"name": "djb", "age": 18}
In[2]: "Name:{name}, Age:{age}".format(**data)
Out[2]: 'Name:djb, Age:18'
Nach dem Login kopieren

Nach Objektattribut

In[1]: class Person(object):
   ...:     def __init__(self, name, age):
   ...:         self.name = name
   ...:         self.age = age
   ...:     def __str__(self):      
   ...:         return "This guy is {self.name}, {self.age} years old.".format(self=self)
   ...:     
In[2]: p = Person("djb", 18)
In[3]: str(p)
Out[3]: 'This guy is djb, 18 years old.'
Nach dem Login kopieren

5. Auffüllen und Ausrichten

zusammen mit der Ausrichtung

^, <, > werden zentriert, linksbündig bzw. rechtsbündig verwendet, gefolgt von der Breite

: Zeichen gefolgt von Auffüllung können nur ein Zeichen sein. Wenn nicht angegeben, wird es standardmäßig mit Leerzeichen gefüllt.

In[1]: "{0[0]} is {0[1]} years old.".format(data)
Out[1]: &#39;djb is 18 years old.&#39;
Nach dem Login kopieren

Fügen Sie eine zfill()-Methode hinzu, die mit einer Zeichenfolge geliefert wird:

Die Python-zfill()-Methode gibt eine Zeichenfolge mit der angegebenen Länge zurück. Die ursprüngliche Zeichenfolge ist rechtsbündig und mit Nullen gefüllt Front.

Syntax der zfill()-Methode: str.zfill(width)

Der Parameter width gibt die Länge der Zeichenfolge an. Die Originalzeichenfolge ist rechtsbündig ausgerichtet und mit Nullen am Anfang aufgefüllt.

Gibt eine Zeichenfolge mit der angegebenen Länge zurück.

In[1]: "{:>10}".format(&#39;18&#39;)
Out[1]: &#39;        18&#39;In[2]: "{:0>10}".format(&#39;18&#39;)
Out[2]: &#39;0000000018&#39;In[3]: "{:A>10}".format(&#39;18&#39;)
Out[3]: &#39;AAAAAAAA18
Nach dem Login kopieren

6. Präzision und Typ f

Präzision wird oft zusammen mit Typ f verwendet.

In[1]: "18".zfill(10)
Out[1]: &#39;0000000018&#39;
Nach dem Login kopieren

wobei .2 die Genauigkeit der Länge 2 darstellt und f den Float-Typ darstellt.

7. Andere Basissysteme

Hauptsächlich sind die Basissysteme b, d, o, x binär, dezimal, oktal und hexadezimal.

In[1]: "{:.2f}".format(3.1415926)
Out[1]: &#39;3.14&#39;
Nach dem Login kopieren

8. Tausendertrennzeichen

In[1]: "{:b}".format(18)
Out[1]: &#39;10010&#39;In[2]: "{:d}".format(18)
Out[2]: &#39;18&#39;In[3]: "{:o}".format(18)
Out[3]: &#39;22&#39;In[4]: "{:x}".format(18)
Out[4]: &#39;12&#39;
Nach dem Login kopieren

Zusammenfassend lässt sich sagen, dass es im Vergleich besser ist, das Format als % zu verwenden, aber jeder hat unterschiedliche Verwendungszwecke. Hier nur einige Vorteile des Formats gegenüber % .

Das obige ist der detaillierte Inhalt vonGibt es eine Möglichkeit, eine Zeichenfolge in Python zu formatieren? (Vergleichende Einführung). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen 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