Ako odstrániť písmená z reťazca v Pythone

Reťazce sú dátové typy používané na reprezentáciu textu/znakov. V tomto článku uvádzame rôzne metódy pre problém odstránenia i th znak z reťazca a porozprávajte sa o možných riešeniach, ktoré je možné použiť na ich dosiahnutie pomocou Pythonu.

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

Odstráňte znaky z reťazca v Pythone

Toto sú nasledujúce metódy, pomocou ktorých môžeme odstrániť písmená z reťazca Python :

  • Použitím str.replace()
  • Použitím preložiť ()
  • Použitím rekurzia
  • Použitie natívnej metódy
  • Použitie rezu + zreťazenia
  • Použitím str.join()
  • Použitím byearray
  • Použitím odstrániť predponu ()

Odstráňte znaky z reťazca pomocou funkcie replace()

str.replace() možno použiť na nahradenie všetkých výskytov požadovaného znaku. Môže sa tiež použiť na vykonanie úlohy odstránenia znaku z reťazca, pretože konkrétny index môžeme nahradiť prázdnym znakom, a tým problém vyriešiť.

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ýkon

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

Časová zložitosť: O(n)
Priestorová zložitosť: O(n)

Nevýhoda: Hlavnou nevýhodou použitia replace() je, že zlyhá v prípadoch, keď sú v reťazci duplikáty, ktoré zodpovedajú znaku na poz. i. Nahradiť() nahradí všetky výskyty konkrétneho znaku, a teda nahradí všetky výskyty všetkých znakov na pozícii i. Túto funkciu môžeme ešte niekedy použiť, ak sa nahrádzajúci znak vyskytne pre 1 sv čas v reťazci.

Odstráňte špecifický znak z reťazca pomocou funkcie Translate()

Táto metóda poskytuje silný mechanizmus na odstránenie znakov z reťazca. Pri tejto metóde sme pomocou techcodeview.com odstránili 123 string.translate() .

Python3




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

Výkon

GeeksForGeeks 

Časová zložitosť: O(n)
Priestorová zložitosť: O (m)

Odstráňte špecifický znak z reťazca pomocou rekurzie

Ak chcete odstrániť i-tý znak z reťazca pomocou rekurzie, môžete definovať rekurzívnu funkciu, ktorá prevezme reťazec a index, ktorý sa má odstrániť, ako argumenty. Funkcia skontroluje, či sa index rovná 0, v tomto prípade vráti reťazec s odstráneným prvým znakom. Ak index nie je 0, funkcia môže vrátiť prvý znak reťazca spojený s výsledkom opätovného volania funkcie na reťazci s indexom zníž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ýkon

The string after removal of ith character: GeksForGeeks 

Časová zložitosť: O(n)
Priestorová zložitosť: O(n)

Odstráňte písmená z reťazca pomocou natívnej metódy

Pri tejto metóde stačí spustiť a Pythonová slučka a pripájajte znaky tak, ako prichádzajú, a vytvorte nový reťazec z existujúceho reťazca okrem prípadov, keď 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ýkon

The string after removal of i'th character : GeksForGeeks 

Časová zložitosť: O(n)
Priestorová zložitosť: O(n), kde n je dĺžka reťazca.

Odstráňte i th Postava z reťazca pomocou rezu

Jeden môže použiť strunový plátok a nakrájajte reťazec pred pozíciou i a rozrežte za poz. i. Potom pomocou reťazenie reťazcov z oboch, t.j th znak sa môže zdať vymazaný z reťazca.

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ýkon

The string after removal of i'th character : GeksForGeeks 

Časová zložitosť: O(n)
Priestorová zložitosť: O(n)

Odstráňte i th Znak z používania reťazca str.join()

Pri tejto metóde sa každý prvok reťazca najskôr skonvertuje ako každý prvok zoznamu a potom sa každý z nich spojí do reťazca okrem 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ýkon

The string after removal of i'th character : GeksForGeeks 

Časová zložitosť: O(n)
Priestorová zložitosť: O(n)

Odstrániť písmená z reťazca v Pythone pomocou byearray

Definujte funkciu remove_char(s, i), ktorá berie reťazec s a celé číslo i ako vstup. A potom skonvertujte vstupný reťazec s na bajtový lúč pomocou byearray(s, 'utf-8'). Odstráňte i’th prvok z byearray pomocou del b[i]. Skonvertujte upravený bajtový lúč späť na reťazec pomocou b.decode() a vráťte upravený reťazec.

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ýkon

hell world 

Časová zložitosť: O(n)
Priestorová zložitosť: O(n)

Odstráňte písmená z reťazca pomocou removeprefix ()

removeprefix() odstráni predponu a vráti zvyšok reťazca. Písmená z reťazca pre akýkoľvek špecifický index môžeme odstrániť tak, že reťazec rozdelíme na dve polovice tak, že písmeno, ktoré sme chceli odstrániť, sa dostane do predpony ktorejkoľvek z dvoch partícií a potom môžeme použiť metódu na odstránenie písmena.

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ýkon:

eeksforGeeks GeeksorGeeks 

Časová zložitosť: O(n)
Priestorová zložitosť: O(n)