Usunięcie pierwszych x znaków z ciągu?

116

Jak można usunąć pierwsze x znaków z łańcucha? Na przykład, gdyby ktoś miał łańcuch lipsum, w jaki sposób usunąłby pierwsze 3 znaki i uzyskałby wynik sum?

tkbx
źródło
5
lepszy przykład, jeśli liczba usuniętych znaków nie była równa liczbie pozostałych znaków. np."lipsumm"[3:] == "summ"
Scott Pelak

Odpowiedzi:

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

Zobacz oficjalną dokumentację dotyczącą łańcuchów, aby uzyskać więcej informacji, oraz odpowiedź SO, aby uzyskać zwięzłe podsumowanie zapisu.

jamylak
źródło
16

Inny sposób (w zależności od twoich rzeczywistych potrzeb): Jeśli chcesz wstawić pierwsze n znaków i zapisać zarówno wyskakujące znaki, jak i zmodyfikowany ciąg:

s = 'lipsum'
n = 3
a, s = s[:n], s[n:]
print(a)
# lip
print(s)
# sum
Ken A
źródło
3
Myślę, że to w przenośni „wpadł”, ale faktycznie jej tylko 2 różne plastry, prawdziwego Popping
jamylak
9
>>> x = 'lipsum'
>>> x.replace(x[:3], '')
'sum'
tkbx
źródło
11
Zauważ, że jest to dłuższe w kodzie i zajmie więcej czasu, ponieważ musisz wyszukać podłańcuch przed jego zastąpieniem. Również: >>> x = 'liplip' >>> x.replace(x[:3], '') ''. Oczywiście możesz to naprawić, ustawiając trzeci parametr (liczba) = 1, ale i tak zajmie to więcej czasu.
jamylak
nie jest to związane z twoją odpowiedzią, więc należy tutaj. Możesz dodać count = 1 do swojego, aby nadal
działał
4

Użyj del.

Przykład:

>>> text = 'lipsum'
>>> l = list(text)
>>> del l[3:]
>>> ''.join(l)
'sum'
U10-Forward
źródło
1
To nie działa tak, jak myślisz, text = 'liplip' >>> text.lstrip(text[:3]) ''ponieważ dla jednego Argument chars nie jest przedrostkiem; raczej wszystkie kombinacje jego wartości są usuwane:str.lstrip([chars])
jamylak
@jamylak Edited mine
U10-Forward
1
Żadne z rozwiązań nie działa np. dla 'liplip'. W drugimTypeError: 'str' object does not support item deletion
jamylak
@jamylak Edytowane ponownie
U10-Forward
@jamylak czy to działa, a jeśli tak, czy musisz głosować przeciw?
U10-Forward
2

Przykład pokazania ostatnich 3 cyfr numeru konta.

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

o/p: '890'
Pratik Jaswant
źródło
To ma ten sam problem, co odpowiedź tkbx
jamylak
na przykład. >>> x = '12345678901234567890' >>> x.replace(x[:7], 'xxxxxxx') 'xxxxxxx890xxxxxxx890'
jamylak
Również to nawet nie odpowiada na pytanie, zastępujesz znaki xs zamiast je usuwać
jamylak