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?

tkbx
quelle
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.

Jamylak
quelle
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
Ken A.
quelle
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'
tkbx
quelle
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'
U10-Vorwärts
quelle
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'
Pratik Jaswant
quelle
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