Jak odstranit poslední znak z řetězce Python?

Photo of author

By etechblogcz

Prozkoumejte rozličné metody, jak v jazyce Python odstranit poslední znak z textového řetězce.

Využití řezů

Python nabízí flexibilní práci s řezáním (slicing) řetězců, včetně použití negativních indexů. Tyto indexy počítají pozice znaků od konce řetězce, kde -1 reprezentuje poslední znak, -2 předposlední a tak dále. Pomocí negativních indexů můžeme snadno získávat prvky z konce iterovatelné sekvence.

  • Index -1 odkazuje na poslední prvek.
  • Index -2 odkazuje na předposlední prvek.
  • Toto pokračuje až k prvnímu prvku.

Podívejme se na praktický příklad:

name="etechblog.cz"
print(name[-1])
print(name[-len(name)])

Tento úryvek kódu vypíše na obrazovku poslední a první znak řetězce, demonstrujíc použití negativních indexů.

Jak tedy odstraníme poslední znak pomocí řezů? Je to jednoduché a efektivní. Využijeme znalosti o tom, jak řezáním extrahovat části řetězce a aplikujeme negativní indexování.

  • Vytvoříme řez od začátku řetězce až po předposlední znak.
buggy_name="GeekflareE"
name = buggy_name[:-1]
print(name)

Klíčová operace se skrývá ve druhém řádku kódu. Klasický řez extrahuje podřetězec od počátečního indexu až po index předcházející koncovému indexu. Toho zde využíváme k odstranění posledního znaku.

Výsledkem tohoto kódu bude výpis „Geekflare“ do konzole.

Metoda rstrip()

Další možností je využití metody `rstrip()`, která odstraňuje zadané znaky z pravé strany řetězce. Můžeme ji tak použít k odstranění posledního znaku. Opět, je to otázka jediného řádku kódu.

  • Metodě `rstrip()` předáme poslední znak a získáme řetězec bez tohoto znaku na konci.

Následuje ukázka:

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

Metodě `rstrip()` předáme poslední znak řetězce, který se následně z konce řetězce odstraní. Metoda vrátí novou kopii řetězce bez tohoto znaku.

Po spuštění se v konzoli objeví text „Geekflare“.

Praktické využití: Odstranění posledního slova

Nyní si ukážeme, jak tyto techniky využít v reálném scénáři.

Představme si, že máme textový soubor s více řádky a z každého z nich potřebujeme odstranit poslední slovo.

Pro řešení tohoto problému můžeme postupovat následujícím způsobem:

  • Vytvoříme soubor `random_text.txt` s několika řádky textu.
  • Inicializujeme prázdný řetězec pro uložení upraveného textu.
  • Otevřeme soubor v režimu čtení i zápisu pomocí `with open()`.
  • Načteme obsah souboru pomocí `readlines()`.
  • Projdeme každý řádek textu:
    • Rozdělíme řádek na slova pomocí metody `split()`.
    • Odstraníme poslední slovo za použití jedné z výše uvedených metod.
    • Spojíme zbylá slova zpět do řetězce.
    • Připojíme upravený řádek k proměnné s výsledným textem.
  • Smažeme původní obsah souboru metodami `seek()` a `truncate()`.
  • Zapíšeme nový obsah do souboru pomocí `write()`.

Soubor `random_text.txt` obsahuje následující řádky:

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.

Následuje kód:

updated_data=""

# otevření souboru
with open('random_text.txt', 'r+') as file:
    # načtení obsahu souboru
    file_content = file.readlines()

    # iterace přes řádky
    for line in file_content:

        # odstranění posledního slova
        updated_line=" ".join(line.split(' ')[:-1])

        # připojení dat k proměnné
        updated_data += f'{updated_line}n'

    # smazání starých dat
    file.seek(0)
    file.truncate()

    # zápis nových dat
    file.write(updated_data)

Po spuštění tohoto kódu bude soubor `random_text.txt` obsahovat upravený text:

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.

Doufám, že vám byl tento tutoriál užitečný.

Přeji příjemné kódování 🙂

Nezapomeňte se také podívat na další operace s podřetězci v Pythonu.

Líbil se vám tento článek? Sdílejte ho s ostatními!