2669 Stimmen

Wie erhalte ich eine Teilzeichenkette einer Zeichenfolge in Python?

Ich möchte eine neue Zeichenkette ab dem dritten Zeichen bis zum Ende der Zeichenkette erhalten, z. B. myString[2:end] . Wenn man den zweiten Teil weglässt, bedeutet das "bis zum Ende", und wenn man den ersten Teil weglässt, beginnt es dann von vorne?

3 Stimmen

Diese enthält eine klare Erklärung pythoncentral.io/cutting-and-slicing-strings-in-python

3750voto

Paolo Bergantino Punkte 465120
>>> x = "Hello World!"
>>> x[2:]
'llo World!'
>>> x[:2]
'He'
>>> x[:-2]
'Hello Worl'
>>> x[-2:]
'd!'
>>> x[2:-2]
'llo Worl'

Python nennt dieses Konzept "Slicing" und es funktioniert nicht nur bei Zeichenketten. Werfen Sie einen Blick aquí für eine umfassende Einführung.

491voto

Endophage Punkte 20082

Nur der Vollständigkeit halber, da es sonst niemand erwähnt hat. Der dritte Parameter eines Array-Slice ist ein Schritt. Also ist die Umkehrung einer Zeichenkette so einfach wie:

some_string[::-1]

Oder die Auswahl alternativer Zeichen wäre:

"H-e-l-l-o- -W-o-r-l-d"[::2] # outputs "Hello World"

Die Möglichkeit, sich vorwärts und rückwärts durch die Zeichenfolge zu bewegen, sorgt für Konsistenz mit der Möglichkeit, einen Array-Slice vom Anfang oder Ende aus zu erstellen.

27 Stimmen

@mtahmed absolut auf die Frage bezogen. Was wäre, wenn Sie eine Teilzeichenkette durch Auswahl alternativer Zeichen aus der Zeichenkette erstellen wollten? Das wäre dann my_string[::2]

0 Stimmen

Ich denke, Sie wollten eher den dritten Parameter für Slice erwähnen. Brauchen, um jedes andere Zeichen aus einer Zeichenfolge zu erhalten kann ein wichtiger Anwendungsfall irgendwo sein, aber ich habe noch nie zu tun hatte. Nicht, dass es falsch wäre, zu zeigen, was man weiß - was nützt es, etwas zu wissen, wenn man das nicht kann :) Aber das Argument der Relevanz für die Frage ist überbewertet.

2 Stimmen

Sicher, das konkrete Beispiel der Auswahl alternativer Zeichen ist für die Frage vielleicht nicht relevant, aber das Verständnis, dass es einen dritten Parameter für das Slicing gibt, ist sehr wichtig, und die einfachen Beispiele dienen zur Veranschaulichung, wie es funktioniert. Die Python-Gemeinschaft hat auch eine großartige Geschichte, wenn es darum geht, neue Mitglieder auf freundliche Art und Weise zu unterrichten :-)

169voto

Michał Leon Punkte 1906

Substr() funktioniert normalerweise (d.h. in PHP und Perl) auf diese Weise:

s = Substr(s, beginning, LENGTH)

Die Parameter sind also beginning y LENGTH .

Aber Python verhält sich anders; es erwartet einen Anfang und einen nach END (!). Dies ist für Anfänger schwer zu erkennen. Der korrekte Ersatz für Substr(s, Anfang, LENGTH) lautet also

s = s[ beginning : beginning + LENGTH]

91 Stimmen

Die Anfänger sollten den pythonischen Weg lernen, wenn sie zu Python wechseln, und sich nicht an andere Sprachgewohnheiten halten

3 Stimmen

Und nur der Vollständigkeit halber: In Java ist es wie in Python so, dass die Methode String.substring() den Anfang und das Ende mit einem Tastendruck übernimmt. Das hat mich gerade hart getroffen, denn ich hatte angenommen, dass sie die gleiche Länge hat wie jede andere substring-Funktion der Welt.

13 Stimmen

Eine (wahrscheinlich) pythonischere Art und Weise, dies zu tun, ist s[beginning:][:length]

82voto

codingscientist Punkte 996

Eine gängige Methode, dies zu erreichen, ist die Aufteilung von Zeichenketten.

MyString[a:b] gibt Ihnen eine Teilzeichenkette von Index a bis (b - 1).

31voto

gimel Punkte 78080

Ein Beispiel scheint hier zu fehlen: die vollständige (oberflächliche) Kopie.

>>> x = "Hello World!"
>>> x
'Hello World!'
>>> x[:]
'Hello World!'
>>> x==x[:]
True
>>>

Dies ist ein gängiges Idiom zur Erstellung einer Kopie von Sequenztypen (nicht von internierten Zeichenketten), [:] . Shallow kopiert eine Liste, siehe Python-List-Slice-Syntax ohne ersichtlichen Grund verwendet .

19 Stimmen

Das hat fast nichts mit der Frage nach der Teilzeichenkette zu tun. Gilt nicht einmal für String. Zu sagen, stringA = stringB ist genug ...

2 Stimmen

Die vollständige Kopie [:] erstellt eine NEUE KOPIE, verwendet die Slice-Syntax und wird als "Teilstring von Anfang bis Ende" gelesen.

2 Stimmen

Was nützt das, wenn Strings unveränderlich sind? a=b sollte ausreichend sein.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X