Python Strings
Table of Contents
In diesem Tutorial lernen Sie, Strings in Python zu erstellen, zu formatieren, zu ändern und zu löschen. Außerdem werden Sie in verschiedene String-Operationen und -Funktionen eingeführt.
What is String in Python?
Ein String ist eine Folge von Zeichen.
Ein Zeichen ist einfach ein Symbol. Die englische Sprache hat beispielsweise 26 Zeichen.
Computer verarbeiten keine Zeichen, sondern Zahlen (binär). Auch wenn Sie möglicherweise Zeichen auf Ihrem Bildschirm sehen, werden sie intern als eine Kombination aus 0 und 1 gespeichert und manipuliert.
Diese Umwandlung eines Zeichens in eine Zahl wird als Kodierung bezeichnet, und der umgekehrte Vorgang ist die Dekodierung. ASCII und Unicode sind einige der gebräuchlichsten Codierungen.
In Python ist ein String eine Folge von Unicode-Zeichen. Unicode wurde eingeführt, um jedes Zeichen in allen Sprachen einzuschließen und eine einheitliche Codierung zu erreichen. Sie können mehr über Unicode erfahren von Python Unicode.
How to create a string in Python?
Strings können erstellt werden, indem Zeichen in einfache Anführungszeichen oder doppelte Anführungszeichen eingeschlossen werden. Sogar dreifache Anführungszeichen können in Python verwendet werden, werden aber im Allgemeinen verwendet, um mehrzeilige Strings und Docstrings darzustellen.
# Strings in Python definieren # alle der folgenden sind gleichwertig my_string = 'Hallo' print(my_string) my_string = "Hallo" print(my_string) my_string = '''Hallo''' print(my_string) # String mit dreifachen Anführungszeichen kann mehrere Zeilen verlängern my_string = """Hallo, willkommen zu die Welt von Python""" print(my_string)
Wenn Sie das Programm ausführen, lautet die Ausgabe:
Hallo Hallo Hallo Hallo, willkommen zu die Welt von Python
How to access characters in a string?
Wir können auf einzelne Zeichen mittels Indexierung und auf einen Zeichenbereich mittels Slicing zugreifen. Der Index beginnt bei 0. Der Versuch, auf ein Zeichen außerhalb des Indexbereichs zuzugreifen, führt zu einem IndexError
. Der Index muss eine ganze Zahl sein. Wir können keine Schwimmer oder andere Typen verwenden, dies führt zu TypeError
.
Python erlaubt eine negative Indizierung für seine Sequenzen.
Der Index von -1
bezieht sich auf den letzten Punkt, -2
zum vorletzten Element usw. Wir können auf eine Reihe von Elementen in einer Zeichenfolge zugreifen, indem wir den Slicing-Operator verwenden :
(colon).
#Auf String-Zeichen in Python zugreifen str = 'programes' print('str = ', str) #erster Charakter print('str[0] = ', str[0]) #letztes Zeichen print('str[-1] = ', str[-1]) #slicing 2nd to 5th Charakter print('str[1:5] = ', str[1:5]) #slicing 6th to 2nd last Charakter print('str[5:-2] = ', str[5:-2])
Wenn wir das obige Programm ausführen, erhalten wir die folgende Ausgabe:
str = programiz str[0] = p str[-1] = s str[1:5] = rogr str[5:-2] = am
Wenn wir versuchen, auf einen Index außerhalb des Bereichs zuzugreifen oder andere Zahlen als eine ganze Zahl zu verwenden, erhalten wir Fehler.
# Index muss im Bereich liegen >>> my_string[15] ... IndexError: String-Index außerhalb des zulässigen Bereichs # Index muss eine ganze Zahl sein >>> my_string[1.5] ... TypeError: String-Indizes müssen ganze Zahlen sein
Das Slicing lässt sich am besten visualisieren, indem man den Index als zwischen den Elementen liegend betrachtet, wie unten gezeigt.
Wenn wir auf einen Bereich zugreifen möchten, benötigen wir den Index, der den Teil aus dem String herausschneidet.
How to change or delete a string?
Strings sind unveränderlich. Das bedeutet, dass Elemente eines Strings nicht mehr geändert werden können, wenn sie einmal zugewiesen wurden. Wir können einfach verschiedene Zeichenfolgen demselben Namen zuweisen.
>>> my_string = 'programes' >>> my_string[5] = 'a' ... TypeError: 'str' object does not support item assignment >>> my_string = 'Python' >>> my_string 'Python'
Wir können keine Zeichen aus einer Zeichenfolge löschen oder entfernen. Das vollständige Löschen der Zeichenfolge ist jedoch mit dem möglich del
Stichwort.
>>> del my_string[1] ... TypeError: 'str' object doesn't support item deletion >>> del my_string >>> my_string ... NameError: name 'my_string' is not defined
Python String Operations
Es gibt viele Operationen, die mit Strings ausgeführt werden können, was ihn zu einem der am häufigsten verwendeten Datentypen in Python macht.
Um mehr über die in Python verfügbaren Datentypen zu erfahren, besuchen Sie: Python-Datentypen.
Concatenation of Two or More Strings
Das Zusammenfügen von zwei oder mehr Strings zu einem einzigen wird als Verkettung bezeichnet.
Der + Operator macht dies in Python. Das einfache Zusammenschreiben von zwei Zeichenfolgenliteralen verkettet sie ebenfalls.
Der * Operator kann verwendet werden, um die Zeichenfolge für eine bestimmte Anzahl von Malen zu wiederholen.
# Python-String-Operationen str1 = 'Hello' str2 ='World!' # using + print('str1 + str2 = ', str1 + str2) # using * print('str1 * 3 =', str1 * 3)
Wenn wir das obige Programm ausführen, erhalten wir die folgende Ausgabe:
str1 + str2 = HelloWorld! str1 * 3 = HelloHelloHello
Das Zusammenschreiben von zwei String-Literalen verkettet sie auch wie + operator.
Wenn wir Strings in verschiedenen Zeilen verketten möchten, können wir Klammern verwenden.
>>> # zwei String-Literale zusammen >>> 'Hello ''World!' 'Hello World!' >>> # Klammern verwenden >>> s = ('Hello ' ... 'World') >>> s 'Hello World'
Iterating Through a string
Wir können einen String mit einer for Schleife durchlaufen. Hier ist ein Beispiel, um die Anzahl der ‘l’s in einem String zu zählen.
# Durch einen String iterieren count = 0 for letter in 'Hello World': if(letter == 'l'): count += 1 print(count,'letters found')
Wenn wir das obige Programm ausführen, erhalten wir die folgende Ausgabe:
3 letters foun
String Membership Test
Wir können testen, ob ein Teilstring innerhalb eines Strings existiert oder nicht, mit dem Schlüsselwort in
.
>>> 'a' in 'program' True >>> 'at' not in 'battle' False
Built-in functions to Work with Python
Verschiedene eingebaute Funktionen, die mit Sequenzen arbeiten, arbeiten auch mit Strings.
Einige der am häufigsten verwendeten sind enumerate()
und len()
. Das enumerate()
Funktion gibt ein Aufzählungsobjekt zurück. Es enthält den Index und den Wert aller Elemente in der Zeichenfolge als Paare. Dies kann für die Iteration nützlich sein.
Ähnlich, len()
gibt die Länge (Anzahl der Zeichen) des Strings zurück.
str = 'cold' # enumerate() list_enumerate = list(enumerate(str)) print('list(enumerate(str) = ', list_enumerate) #character count print('len(str) = ', len(str))
Wenn wir das obige Programm ausführen, erhalten wir die folgende Ausgabe:
list(enumerate(str) = [(0, 'c'), (1, 'o'), (2, 'l'), (3, 'd')] len(str) = 4
Python String Formatting
Escape Sequence
Wenn wir einen Text drucken möchten wie Er sagte: “Was ist da?”, wir dürfen weder einfache noch doppelte Anführungszeichen verwenden. Dies führt zu einem SyntaxError
da der Text selbst sowohl einfache als auch doppelte Anführungszeichen enthält.
>>> print("Er sagte: "Was ist da?"") ... SyntaxError: invalid syntax >>> print('Er sagte: "Was ist da?"') ... SyntaxError: invalid syntax
Eine Möglichkeit, dieses Problem zu umgehen, besteht darin, dreifache Anführungszeichen zu verwenden. Alternativ können wir Escape-Sequenzen verwenden.
Eine Escape-Sequenz beginnt mit einem Backslash und wird unterschiedlich interpretiert. Wenn wir ein einfaches Anführungszeichen verwenden, um einen String darzustellen, müssen alle einfachen Anführungszeichen innerhalb des Strings maskiert werden. Ähnlich verhält es sich mit doppelten Anführungszeichen. Hier ist, wie es getan werden kann, um den obigen Text darzustellen.
# using triple quotes print('''He said, "What's there?"''') # escaping single quotes print('He said, "What\'s there?"') # escaping double quotes print("He said, \"What's there?\"")
Wenn wir das obige Programm ausführen, erhalten wir die folgende Ausgabe:
He said, "What's there?" He said, "What's there?" He said, "What's there?"
Hier ist eine Liste aller Escape-Sequenzen, die von Python unterstützt werden.
Escape Sequence | Description |
---|---|
\newline | Backslash and newline ignored |
\\ | Backslash |
\’ | Single quote |
\” | Double quote |
\a | ASCII Bell |
\b | ASCII Backspace |
\f | ASCII Formfeed |
\n | ASCII Linefeed |
\r | ASCII Carriage Return |
\t | ASCII Horizontal Tab |
\v | ASCII Vertical Tab |
\ooo | Character with octal value ooo |
\xHH | Character with hexadecimal value HH |
Hier sind einige Beispiele
>>> print("C:\\Python32\\Lib") C:\Python32\Lib >>> print("Das ist gedruckt\nin zwei Zeilen") Das ist gedruckt in zwei Zeilen >>> print("Das ist \x48\x45\x58 darstellung") Das ist HEX Darstellung
Raw String to ignore escape sequence
Manchmal möchten wir vielleicht die Escape-Sequenzen innerhalb eines Strings ignorieren. Dazu können wir platzieren r
oder R
vor der Schnur. Dies bedeutet, dass es sich um einen Rohstring handelt und jede darin enthaltene Escape-Sequenz ignoriert wird.
>>> print("This is \x61 \ngood example") This is a good example >>> print(r"This is \x61 \ngood example") This is \x61 \ngood example
The format() Method for Formatting Strings
Die format()
mit dem String-Objekt verfügbare Methode ist sehr vielseitig und leistungsstark beim Formatieren von Strings. Formatzeichenfolgen enthalten geschweifte Klammern {}
als Platzhalter oder Ersatzfelder, die ersetzt werden.
Wir können Positionsargumente oder Schlüsselwortargumente verwenden, um die Reihenfolge anzugeben.
# Python string format() method # default(implicit) order default_order = "{}, {} and {}".format('John','Bill','Sean') print('\n--- Default Order ---') print(default_order) # order using positional argument positional_order = "{1}, {0} and {2}".format('John','Bill','Sean') print('\n--- Positional Order ---') print(positional_order) # order using keyword argument keyword_order = "{s}, {b} and {j}".format(j='John',b='Bill',s='Sean') print('\n--- Keyword Order ---') print(keyword_order)
Wenn wir das obige Programm ausführen, erhalten wir die folgende Ausgabe:
--- Default Order --- John, Bill and Sean --- Positional Order --- Bill, John and Sean --- Keyword Order --- Sean, Bill and John
Die format()
Methode kann optionale Formatspezifikationen haben. Sie werden durch Doppelpunkt vom Feldnamen getrennt. Zum Beispiel können wir linksbündig ausrichten <
, rechtsbündig >
oder Mitte ^
eine Zeichenfolge im angegebenen Raum.
Wir können auch ganze Zahlen als binär, hexadezimal usw. formatieren und Gleitkommazahlen können gerundet oder im Exponentenformat angezeigt werden. Es gibt unzählige Formatierungen, die Sie verwenden können. Hier finden Sie alle verfügbaren Zeichenfolgenformatierungen mit dem format()
methode.
>>> # formatting integers >>> "Binary representation of {0} is {0:b}".format(12) 'Binary representation of 12 is 1100' >>> # formatting floats >>> "Exponent representation: {0:e}".format(1566.345) 'Exponent representation: 1.566345e+03' >>> # round off >>> "One third is: {0:.3f}".format(1/3) 'One third is: 0.333' >>> # string alignment >>> "|{:<10}|{:^10}|{:>10}|".format('butter','bread','ham') '|butter | bread | ham|'
Old style formatting
Wir können sogar Strings wie die alten formatieren sprintf()
stil, der in der Programmiersprache C verwendet wird. Wir benutzen das %
betreiber, um dies zu erreichen.
>>> x = 12.3456789 >>> print('Der Wert von x ist %3.2f' %x) Der Wert von x ist 12.35 >>> print('Der Wert von x ist %3.4f' %x) Der Wert von x ist 12.3457
Common Python String Methods
Es gibt zahlreiche Methoden, die mit dem String-Objekt zur Verfügung stehen. Die format()
Methode, die wir oben erwähnt haben, ist eine davon. Einige der am häufigsten verwendeten Methoden sind lower()
, upper()
, join()
, split()
, find()
, replace()
usw. Hier ist eine vollständige Liste aller integrierten Methoden zum Arbeiten mit Strings in Python.
>>> "PrOgRaMeS".lower() 'programiz' >>> "PrOgRaMeS".upper() 'PROGRAMES' >>> "This will split all words into a list".split() ['This', 'will', 'split', 'all', 'words', 'into', 'a', 'list'] >>> ' '.join(['This', 'will', 'join', 'all', 'words', 'into', 'a', 'string']) 'This will join all words into a string' >>> 'Happy New Year'.find('ew') 7 >>> 'Happy New Year'.replace('Happy','Brilliant') 'Brilliant New Year'