Jak odstranit písmena z řetězce v Pythonu

Řetězce jsou datové typy používané k reprezentaci textu/znaků. V tomto článku uvádíme různé metody pro problém odstranění i čt znak z řetězce a mluvit o možných řešeních, která lze použít k jejich dosažení pomocí Pythonu.

  Input:   'Geeks123For123Geeks'   Output:   GeeksForGeeks   Explanation:   In This, we have removed the '123' character from a string. 

Odstraňte znaky z řetězce v Pythonu

Toto jsou následující metody, pomocí kterých můžeme odstranit písmena z řetězce v Krajta :

  • Použitím str.replace()
  • Použitím přeložit()
  • Použitím rekurze
  • Použití nativní metody
  • Použití řezu + zřetězení
  • Použitím str.join()
  • Použitím byearray
  • Použitím odstranit předponu ()

Odebrání znaků z řetězce pomocí replace()

str.replace() lze použít k nahrazení všech výskytů požadovaného znaku. Může být také použit k provedení úlohy odstranění znaku z řetězce, protože můžeme nahradit konkrétní index prázdným znakem, a tím problém vyřešit.

Python3




# Initializing String> test_str> => 'GeeksForGeeks'> # Removing char at pos 3> # using replace> new_str> => test_str.replace(> 'e'> , '')> # Printing string after removal> # removes all occurrences of 'e'> print> (> 'The string after removal of i'th character( doesn't work) : '> +> new_str)> # Removing 1st occurrence of s, i.e 5th pos.> # if we wish to remove it.> new_str> => test_str.replace(> 's'> , '',> 1> )> # Printing string after removal> # removes first occurrences of s> print> (> 'The string after removal of i'th character(works) : '> +> new_str)>

Výstup

The string after removal of i'th character( doesn't work) : GksForGks The string after removal of i'th character(works) : GeekForGeeks 

Časová náročnost: Na)
Prostorová složitost: Na)

Nevýhoda: Hlavní nevýhodou použití replace() je, že selže v případech, kdy jsou v řetězci duplikáty, které odpovídají znaku na pozici. i. Nahradit() nahradí všechny výskyty určitého znaku, a proto by nahradilo všechny výskyty všech znaků na pozici i. Stále můžeme tuto funkci někdy použít, pokud se nahrazující znak vyskytne pro 1 Svatý čas v řetězci.

Odstraňte konkrétní znak z řetězce pomocí Translate()

Tato metoda poskytuje silný mechanismus pro odstranění znaků z řetězce. V této metodě jsme odstranili 123 z techcodeview.com pomocí string.translate() .

Python3




str> => 'Geeks123For123Geeks'> > print> (> str> .translate({> ord> (i):> None> for> i> in> '123'> }))>

Výstup

GeeksForGeeks 

Časová náročnost: Na)
Prostorová složitost: O(m)

Odstraňte specifický znak z řetězce pomocí rekurze

Chcete-li odstranit i-tý znak z řetězce pomocí rekurze, můžete definovat rekurzivní funkci, která vezme řetězec a index, který má být odstraněn, jako argumenty. Funkce zkontroluje, zda je index roven 0, v tomto případě vrátí řetězec s odstraněným prvním znakem. Pokud index není 0, může funkce vrátit první znak řetězce zřetězený s výsledkem opětovného volání funkce na řetězci s indexem sníženým o 1.

Python3




def> remove_ith_character(s, i):> > # Base case: if index is 0,> > # return string with first character removed> > if> i> => => 0> :> > return> s[> 1> :]> > # Recursive case: return first character> > # concatenated with result of calling function> > # on string with index decremented by 1> > return> s[> 0> ]> +> remove_ith_character(s[> 1> :], i> -> 1> )> # Test the function> test_str> => 'GeeksForGeeks'> new_str> => remove_ith_character(test_str,> 2> )> print> (> 'The string after removal of ith character:'> , new_str)> # This code is contributed by Edula Vinay Kumar Reddy>

Výstup

The string after removal of ith character: GeksForGeeks 

Časová náročnost: Na)
Prostorová složitost: Na)

Odstraňte písmena z řetězce pomocí nativní metody

V této metodě stačí spustit a Pythonská smyčka a připojujte znaky tak, jak přicházejí, a vytvořte nový řetězec ze stávajícího, s výjimkou případů, kdy je index i.

Python3




test_str> => 'GeeksForGeeks'> # Removing char at pos 3> new_str> => ''> for> i> in> range> (> len> (test_str)):> > if> i !> => 2> :> > new_str> => new_str> +> test_str[i]> # Printing string after removal> print> (> 'The string after removal of i'th character : '> +> new_str)>

Výstup

The string after removal of i'th character : GeksForGeeks 

Časová náročnost: Na)
Prostorová složitost: O(n), kde n je délka řetězce.

Odstraňte i čt Postava z řetězce pomocí řezu

Člověk může použít provázkový plátek a nakrájejte řetězec před pos i a nakrájejte za pos i. Poté pomocí řetězení řetězců z obou, tj čt znak se může zdát z řetězce odstraněn.

Python3




# Initializing String> test_str> => 'GeeksForGeeks'> # Removing char at pos 3> # using slice + concatenation> new_str> => test_str[:> 2> ]> +> test_str[> 3> :]> # Printing string after removal> # removes ele. at 3rd index> print> (> 'The string after removal of i'th character : '> +> new_str)>

Výstup

The string after removal of i'th character : GeksForGeeks 

Časová náročnost: Na)
Prostorová složitost: Na)

Odstraňte i čt Použití znaku z řetězce str.join()

V této metodě je každý prvek řetězce nejprve převeden jako každý prvek seznamu a poté je každý z nich spojen do řetězce kromě zadaného indexu.

Python3




# Initializing String> test_str> => 'GeeksForGeeks'> # Removing char at pos 3> # using join() + list comprehension> new_str> => ''.join([test_str[i]> for> i> in> range> (> len> (test_str))> if> i !> => 2> ])> # Printing string after removal> # removes ele. at 3rd index> print> (> 'The string after removal of i'th character : '> +> new_str)>

Výstup

The string after removal of i'th character : GeksForGeeks 

Časová náročnost: Na)
Prostorová složitost: Na)

Odstraňte písmena z řetězce v Pythonu pomocí byearray

Definujte funkci remove_char(s, i), která přijímá řetězec s a celé číslo i jako vstup. A pak převeďte vstupní řetězec s na bajtray pomocí byearray(s, 'utf-8'). Odstraňte i’th prvek z byearray pomocí del b[i]. Převeďte upravený bajtray zpět na řetězec pomocí b.decode() a vraťte upravený řetězec.

Python3




def> remove_char(s, i):> > b> => bytearray(s,> 'utf-8'> )> > del> b[i]> > return> b.decode()> # Example usage> s> => 'hello world'> i> => 4> s> => remove_char(s, i)> print> (s)>

Výstup

hell world 

Časová náročnost: Na)
Prostorová složitost: Na)

Odstranění písmen z řetězce pomocí removeprefix()

removeprefix() odstraní předponu a vrátí zbytek řetězce. Písmena z řetězce pro jakýkoli konkrétní index můžeme odstranit tak, že řetězec rozdělíme na dvě poloviny tak, aby písmeno, které jsme chtěli odstranit, bylo v předponě kteréhokoli ze dvou oddílů, a pak můžeme použít metodu k odstranění písmene.

Python3




#initializing the string> s> => 'techcodeview.com'> #if you wanted to remove 'G' of 0th index> s1> => s.removeprefix(> 'G'> )> #if you wanted to remove 'f'> s2> => s[:> 5> ]> +> s[> 5> :].removeprefix(> 'f'> )> print> (s1)> print> (s2)>

Výstup:

eeksforGeeks GeeksorGeeks 

Časová náročnost: Na)
Prostorová složitost: Na)