Removendo os primeiros x caracteres da string?

116

Como remover os primeiros x caracteres de uma string? Por exemplo, se alguém tivesse uma string lipsum, como eles removeriam os primeiros 3 caracteres e obteriam o resultado de sum?

tkbx
fonte
5
melhor exemplo se o número de caracteres removidos não for igual ao número de caracteres a permanecer. por exemplo"lipsumm"[3:] == "summ"
Scott Pelak

Respostas:

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

Consulte a documentação oficial sobre strings para obter mais informações e esta resposta do SO para um resumo conciso da notação.

Jamylak
fonte
16

Outra maneira (dependendo de suas necessidades reais): se você deseja exibir os primeiros n caracteres e salvar os caracteres exibidos e a string modificada:

s = 'lipsum'
n = 3
a, s = s[:n], s[n:]
print(a)
# lip
print(s)
# sum
Ken A
fonte
3
Eu acho que metaforicamente "estourou", mas na verdade são apenas 2 fatias diferentes, sem estourar de verdade
Jamylak de
9
>>> x = 'lipsum'
>>> x.replace(x[:3], '')
'sum'
tkbx
fonte
11
Observe que isso é mais longo no código e também levará mais tempo, já que você precisa pesquisar a substring antes de substituí-la. Também: >>> x = 'liplip' >>> x.replace(x[:3], '') ''. Claro que você poderia corrigir isso tendo o terceiro parâmetro (contagem) = 1, mas ainda assim demoraria mais.
Jamylak
nah está relacionado à sua resposta, portanto, pertence aqui. Você pode adicionar count = 1 ao seu para que ele ainda funcione btw
jamylak
4

Use del.

Exemplo:

>>> text = 'lipsum'
>>> l = list(text)
>>> del l[3:]
>>> ''.join(l)
'sum'
U10-Forward
fonte
1
Isso não funciona como você pensa, text = 'liplip' >>> text.lstrip(text[:3]) ''porque para um O argumento chars não é um prefixo; em vez disso, todas as combinações de seus valores são removidas:str.lstrip([chars])
jamylak
@jamylak Editou o meu
U10-Forward
1
Nenhuma das soluções funciona, por exemplo. para 'liplip'. No segundoTypeError: 'str' object does not support item deletion
Jamylak
@jamylak editado novamente
U10-Forward
@jamylak funciona, agora, se sim, você precisa votar contra?
U10-Forward
2

Exemplo para mostrar os últimos 3 dígitos do número da conta.

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

o/p: '890'
Pratik Jaswant
fonte
Isso tem o mesmo problema que a resposta de tkbx
jamylak de
por exemplo. >>> x = '12345678901234567890' >>> x.replace(x[:7], 'xxxxxxx') 'xxxxxxx890xxxxxxx890'
Jamylak de
Além disso, isso nem mesmo responde à pergunta, você está substituindo os caracteres por xs em vez de excluí-los
jamylak