Heim  >  Artikel  >  Backend-Entwicklung  >  Gibt es eine Möglichkeit, eine Zeichenfolge in Python zu formatieren? (Vergleichende Einführung)

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

不言
不言Original
2018-09-25 16:18:001583Durchsuche

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

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,)

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

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

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"

Gemeinsame Formatverwendung

Nach Position

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

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 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.'

5. Auffüllen und Ausrichten

zusammen mit der Ausrichtung

^, 95ec6993dc754240360e28e0de8de30a 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]: 'djb is 18 years old.'

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('18')
Out[1]: '        18'In[2]: "{:0>10}".format('18')
Out[2]: '0000000018'In[3]: "{:A>10}".format('18')
Out[3]: 'AAAAAAAA18

6. Präzision und Typ f

Präzision wird oft zusammen mit Typ f verwendet.

In[1]: "18".zfill(10)
Out[1]: '0000000018'

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]: '3.14'

8. Tausendertrennzeichen

In[1]: "{:b}".format(18)
Out[1]: '10010'In[2]: "{:d}".format(18)
Out[2]: '18'In[3]: "{:o}".format(18)
Out[3]: '22'In[4]: "{:x}".format(18)
Out[4]: '12'

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!

Stellungnahme:
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