Usuń końcowy znak z łańcucha


508

Powiedzmy, że mój ciąg ma 10 znaków.

Jak usunąć ostatnią postać?

Jeśli mój ciąg to "abcdefghij"(nie chcę zastępować 'j'znaku, ponieważ mój ciąg może zawierać wiele 'j'znaków), chcę tylko ostatniego znaku. Niezależnie od tego, co to jest i ile razy występuje, muszę usunąć ostatni znak z mojego ciągu.


Odpowiedzi:


832

Prosty:

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

Istnieje również inny sposób, który pokazuje, jak to zrobić za pomocą kroków:

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

Jest to również sposób wprowadzania danych przez użytkownika:

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

Aby usunąć ostatnie słowo z listy:

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

3
Tak, st[-1]to tylko ostatnia postaćst
Cyrille z

5
W rzeczywistości ten plaster będzie nadal działać, nawet jeśli stjest pusty. Cóż, nadal zwróci pusty ciąg, ale nie dostaniesz błędu.
kindall

1
Co jeśli masz listę słów i chcesz usunąć ostatni znak każdego słowa? [niebieski, czerwony, zielony] => [blu, re, gree]?
Jellyse,

5
[i[:-1] for i in ['blue','red','green']]
Cyrille,

3
Patrząc na przykłady, warto wspomnieć, że listy są zmienne i że ta list.pop()metoda jest właściwą drogą do czynienia z listami, ponieważ usuwa ostatni element na miejscu O(1), a [:-1]wycinanie tworzy kopię listy bez ostatniego elementu na O(n-1)czas plus O(n-1)spacja. Ciągi są niezmienne - więc nic do dodania.
Dmitry

19

To, co próbujesz zrobić, to rozszerzenie krojenia ciągów w Pythonie:

Powiedzmy, że wszystkie ciągi mają długość 10, ostatni znak do usunięcia:

>>> st[:9]
'abcdefghi'

Aby usunąć ostatnie Nznaki:

>>> N = 3
>>> st[:-N]
'abcdefg'
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.