Jak usunąć ostatni znak z ciągu Pythona?

Photo of author

By maciekx

Odkryj różnorodne techniki usuwania ostatniego znaku z tekstu w języku Python.

Wycinanie fragmentów tekstu

Python umożliwia operowanie na fragmentach ciągów znaków, zarówno za pomocą indeksów dodatnich, jak i ujemnych. Indeksowanie ujemne rozpoczyna się od -1, reprezentującego ostatni element, aż do -(długość_sekwencji). Wykorzystamy tę właściwość, aby selekcjonować elementy od końca sekwencji.

  • Indeks -1 odnosi się do ostatniego elementu w kolekcji.
  • Indeks -2 wskazuje na przedostatni element.
  • Proces ten trwa, aż do osiągnięcia pierwszego elementu.

Przeanalizujmy to na przykładzie.

name = "newsblog.pl"
print(name[-1])
print(name[-len(name)])

Powyższy skrypt prezentuje, jak za pomocą indeksowania ujemnego można wydobyć pierwszy i ostatni znak z łańcucha znaków.

Jak zatem, korzystając z wycinania, pozbyć się ostatniego elementu? Wystarczy jedna linijka kodu. Wykorzystując znaną technikę wycinania podciągów, zastosujemy ją z indeksem ujemnym, aby wyodrębnić łańcuch bez ostatniego znaku.

  • Wytnij fragment od początku do elementu poprzedzającego ostatni.
buggy_name = "GeekflareE"
name = buggy_name[:-1]
print(name)

Kluczową rolę odgrywa druga linia kodu. To ona realizuje magiczne cięcie, wyodrębniając fragment od indeksu początkowego do indeksu przedostatniego, ponieważ przy wycinaniu drugi podany indeks jest wykluczany.

W efekcie uruchomienia powyższego kodu otrzymasz na wyjściu „Geekflare”.

Użycie metody rstrip

Metoda `rstrip` usuwa określone znaki z prawej strony ciągu. W związku z tym możemy ją wykorzystać, aby pozbyć się ostatniego znaku. Operacja ta wymaga tylko jednej linii kodu.

  • Przekazując ostatni element do metody `strip`, otrzymamy ciąg pozbawiony tego znaku.

Przyjrzyjmy się fragmentowi kodu.

buggy_name = "GeekflareE"
name = buggy_name.rstrip(buggy_name[-1])
print(name)

Przekazaliśmy ostatni znak ciągu do metody `rstrip`. Metoda ta usuwa ten znak z końca i zwraca zmodyfikowaną kopię ciągu.

W rezultacie wykonania tego skryptu na konsoli wyświetli się „Geekflare”.

Praktyczny przykład – usuwanie ostatniego słowa

Wykorzystajmy zdobytą wiedzę w realnym scenariuszu.

Załóżmy, że dysponujemy plikiem zawierającym wiele linijek tekstu, a naszym celem jest usunięcie ostatniego słowa z każdej z nich.

Postępuj zgodnie z poniższymi krokami, aby zrealizować to zadanie:

  • Utwórz plik o nazwie `random_text.txt` i umieść w nim kilka linijek tekstu.
  • Zainicjuj zmienną `dane` jako pusty ciąg.
  • Otwórz plik w trybie odczytu i zapisu za pomocą konstrukcji `with open()`.
  • Odczytaj zawartość pliku za pomocą metody `readlines()`.
  • Przejdź iteracyjnie po każdym wierszu tekstu.
    • Podziel każdy wiersz na słowa za pomocą metody `split()`.
    • Usuń ostatnie słowo, używając jednej z opisanych wcześniej technik.
    • Połącz pozostałe słowa w nowy ciąg.
    • Dodaj nowy ciąg do zmiennej `dane`.
  • Wyczyść zawartość pliku za pomocą metod `seek()` i `truncate()`.
  • Zapisz zaktualizowane dane do pliku za pomocą metody `write()`.

Plik `random_text.txt` zawiera następujące dane:

This is a sample line for testing. LastWord.
This is a sample line for testing. KillingIt.
This is a sample line for testing. RandomWord.
This is a sample line for testing. DeleteIt.
This is a sample line for testing. RemovingIt.

Oto kod realizujący zadanie:

updated_data = ""

# otwarcie pliku
with open('random_text.txt', 'r+') as file:
    # odczyt zawartości pliku
    file_content = file.readlines()

    # iteracja po zawartości
    for line in file_content:

        # usuwanie ostatniego słowa
        updated_line = " ".join(line.split(' ')[:-1])

        # dodawanie danych do zmiennej
        updated_data += f'{updated_line}n'

    # usunięcie starej zawartości
    file.seek(0)
    file.truncate()

    # zapisanie nowych danych
    file.write(updated_data)

Po uruchomieniu tego kodu, plik `random_text.txt` będzie zawierał następujące, zmodyfikowane dane:

This is a sample line for testing.
This is a sample line for testing.
This is a sample line for testing.
This is a sample line for testing.
This is a sample line for testing.

Mam nadzieję, że ten poradnik okazał się pomocny.

Życzę udanego kodowania 🙂

Zapraszam również do zapoznania się z tematem Operacje na podciągach w Pythonie.

Spodobał Ci się ten artykuł? Zachęcam do podzielenia się nim z innymi!


newsblog.pl