Remover o caractere final da sequência

510

Digamos que minha string tenha 10 caracteres.

Como removo o último caractere?

Se minha string for "abcdefghij"(não quero substituir o 'j'caractere, pois minha string pode conter vários 'j'caracteres), quero apenas o último caractere. Independentemente do que seja ou de quantas vezes ocorra, preciso remover o último caractere da minha string.

user1675111
fonte

Respostas:

835

Simples:

st =  "abcdefghij"
st = st[:-1]

Há também outra maneira que mostra como isso é feito com as etapas:

list1 = "abcdefghij"
list2 = list(list1)
print(list2)
list3 = list2[:-1]
print(list3)

Esta também é uma maneira de entrada do usuário:

list1 = input ("Enter :")
list2 = list(list1)
print(list2)
list3 = list2[:-1]
print(list3)

Para tirar a última palavra de uma lista:

list1 = input("Enter :")
list2 = list1.split()
print(list2)
list3 = list2[:-1]
print(list3)
Cyrille
fonte
3
Sim, st[-1]é apenas o último caractere dest
Cyrille 18/03
5
Na verdade, essa fatia ainda funcionará mesmo se stestiver vazia. Bem, ele retornará uma string vazia ainda, mas você não receberá um erro.
Kindall
1
E se você tiver uma lista de palavras e quiser excluir o último caractere de cada palavra? [azul, vermelho, verde] => [blu, re, gree]?
Jellyse
5
[i[:-1] for i in ['blue','red','green']]
Cyrille
3
Observando os exemplos, vale ressaltar que as listas são mutáveis ​​e esse list.pop()método é o caminho a seguir quando se lida com listas, pois remove o último item no local O(1), enquanto o [:-1]fatiamento cria uma cópia de uma lista sem o último elemento no O(n-1)tempo mais O(n-1)espaço. As strings são imutáveis ​​- portanto, nada a acrescentar.
Dmitry
19

O que você está tentando fazer é uma extensão do fatiamento de strings no Python:

Digamos que todas as strings tenham comprimento 10, último caractere a ser removido:

>>> st[:9]
'abcdefghi'

Para remover os últimos Ncaracteres:

>>> N = 3
>>> st[:-N]
'abcdefg'
mu 無
fonte