2701 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

10voto

CopyPasteIt Punkte 484

Wenn myString eine Kontonummer enthält, die bei Offset 6 beginnt und die Länge 9 hat, können Sie die Kontonummer auf diese Weise extrahieren: acct = myString[6:][:9] .

Wenn der Auftraggeber dies akzeptiert, könnte er es versuchsweise versuchen,

myString[2:][:999999]

Es funktioniert - es wird kein Fehler ausgelöst, und es tritt kein standardmäßiges "string padding" auf.

1 Stimmen

Ich denke, wenn Sie diese Methode anwenden wollen myString[offset:][:length] im Fall von OP können Sie einfach myString[offset:][:]

1 Stimmen

@VictorVal Die Antwort ist für diejenigen (wie mich), die Python als 2. (3., 4., ...) Programmiersprache gelernt haben und wollen einige vertraute "Syntax Haken", um die Sprache zu nähern. Experten in dieser Sprache werden meine Antwort wahrscheinlich als etwas albern ansehen.

0 Stimmen

Sollten Antworten wie diese zur Löschung markiert werden? Andere Antworten erklären eine ähnliche Lösung viel besser, und als ich diese hier sah, kratzte ich mich am Kopf und schlug einige Minuten lang in Python nach, bevor ich merkte, dass es genau diese Art von Antwort war.

10voto

Nun, ich hatte eine Situation, in der ich ein PHP-Skript in Python übersetzen musste, und es hatte viele Verwendungen von substr(string, beginning, LENGTH) .
Wenn ich Pythons string[beginning:end] Ich müsste berechnen viel der Endindizes, so dass der einfachere Weg darin bestand, die string[beginning:][:length] Das hat mir eine Menge Ärger erspart.

6voto

Rudi Uhl Punkte 75

Vielleicht habe ich es übersehen, aber ich konnte auf dieser Seite keine vollständige Antwort auf die ursprüngliche(n) Frage(n) finden, da Variablen hier nicht weiter diskutiert werden. Also musste ich weitersuchen.

Da ich noch keine Kommentare abgeben darf, möchte ich hier meine Schlussfolgerung hinzufügen. Ich bin sicher, dass ich nicht der einzige war, der sich dafür interessierte, als ich diese Seite aufrief:

 >>>myString = 'Hello World'
 >>>end = 5

 >>>myString[2:end]
 'llo'

Wenn Sie den ersten Teil weglassen, erhalten Sie

 >>>myString[:end]
 'Hello' 

Und wenn Sie das : in der Mitte lassen, erhalten Sie die einfachste Teilzeichenkette, nämlich das 5. Zeichen (die Zählung beginnt mit 0, also ist es in diesem Fall das Leerzeichen):

 >>>myString[end]
 ' '

4voto

levi Punkte 20323

Die Verwendung von hartkodierten Indizes kann zu einem Chaos führen.

Um das zu vermeiden, bietet Python ein eingebautes Objekt slice() .

string = "my company has 1000$ on profit, but I lost 500$ gambling."

Wenn wir wissen wollen, wie viel Geld ich noch habe.

Normale Lösung:

final = int(string[15:19]) - int(string[43:46])
print(final)
>>>500

Scheiben verwenden:

EARNINGS = slice(15, 19)
LOSSES = slice(43, 46)
final = int(string[EARNINGS]) - int(string[LOSSES])
print(final)
>>>500

Mit Slice gewinnen Sie an Lesbarkeit.

5 Stimmen

Vielleicht ist dies nicht das beste Beispiel, da die hartkodierten Indizes bestehen bleiben und die Lesbarkeit durch Zwischenvariablen erreicht wird, die Sie auch im ersten Beispiel hätten verwenden können.

1voto

Code Carbonate Punkte 475
a="Helloo"
print(a[:-1])

Im obigen Code gibt [:-1] an, dass vom Anfang bis zur Obergrenze-1 gedruckt werden soll.

OUTPUT :

>>> Hello

Anmerkung: Hier ist a [:-1] auch dasselbe wie a [0:-1] und a [0:len(a)-1]

a="I Am Siva"
print(a[2:])

OUTPUT:

>>> Am Siva

Im obigen Code erklärt a [2:], dass a ab Index 2 bis zum letzten Element gedruckt werden soll.

Denken Sie daran, dass, wenn Sie die Höchstgrenze für die Ausgabe einer Zeichenkette als (x) festlegen, die Zeichenkette bis (x-1) ausgegeben wird, und denken Sie auch daran, dass der Index einer Liste oder Zeichenkette immer bei 0 beginnt.

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