Erste x Zeichen aus der Zeichenfolge entfernen?


116

Wie kann man die ersten x Zeichen aus einer Zeichenfolge entfernen? Wenn man zum Beispiel eine Zeichenfolge hätte lipsum, wie würden sie die ersten 3 Zeichen entfernen und ein Ergebnis von erhalten sum?


5
Besseres Beispiel, wenn die Anzahl der entfernten Zeichen nicht der Anzahl der verbleibenden Zeichen entspricht. zB"lipsumm"[3:] == "summ"
Scott Pelak

Antworten:


213
>>> text = 'lipsum'
>>> text[3:]
'sum'

Weitere Informationen finden Sie in der offiziellen Dokumentation zu Zeichenfolgen. In dieser SO-Antwort finden Sie eine kurze Zusammenfassung der Notation.


16

Ein anderer Weg (abhängig von Ihren tatsächlichen Anforderungen): Wenn Sie die ersten n Zeichen einfügen und sowohl die angezeigten Zeichen als auch die geänderte Zeichenfolge speichern möchten :

s = 'lipsum'
n = 3
a, s = s[:n], s[n:]
print(a)
# lip
print(s)
# sum

3
Ich denke, es ist metaphorisch "geknallt", aber tatsächlich sind es nur 2 verschiedene Scheiben, kein echtes Knallen
Jamylak

9
>>> x = 'lipsum'
>>> x.replace(x[:3], '')
'sum'

11
Beachten Sie, dass dies im Code länger ist und auch länger dauert, da Sie nach dem Teilstring suchen müssen, bevor Sie ihn ersetzen. Auch : >>> x = 'liplip' >>> x.replace(x[:3], '') ''. Sicher, Sie könnten dies beheben, indem Sie den dritten Parameter (count) = 1 haben, aber es würde immer noch länger dauern.
Jamylak

Nein, es hängt mit deiner Antwort zusammen, also gehört es hierher. Sie können count = 1 zu Ihrem hinzufügen, so dass es übrigens noch funktioniert
jamylak

4

Verwenden Sie del.

Beispiel:

>>> text = 'lipsum'
>>> l = list(text)
>>> del l[3:]
>>> ''.join(l)
'sum'

1
Dies funktioniert nicht so, wie Sie denken würden, text = 'liplip' >>> text.lstrip(text[:3]) ''weil das chars-Argument kein Präfix ist. Vielmehr werden alle Kombinationen seiner Werte entfernt:str.lstrip([chars])
Jamylak

@ Jamylak Bearbeitet meine
U10-Forward

1
Keine der Lösungen funktioniert z. für 'liplip'. In der zweitenTypeError: 'str' object does not support item deletion
Jamylak

@jamylak Erneut bearbeitet
U10-Forward

@jamylak funktioniert es jetzt, wenn ja, müssen Sie abstimmen?
U10-Stürmer

2

Beispiel zur Anzeige der letzten 3 Ziffern der Kontonummer.

x = '1234567890'   
x.replace(x[:7], '')

o/p: '890'

Dies hat das gleiche Problem wie die Antwort von tkbx
Jamylak

z.B. >>> x = '12345678901234567890' >>> x.replace(x[:7], 'xxxxxxx') 'xxxxxxx890xxxxxxx890'
Jamylak

Auch dies beantwortet nicht einmal die Frage, Sie ersetzen Zeichen durch xs, anstatt sie zu löschen
jamylak
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.