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?


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.


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

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'

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'

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'

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.