Cum să înlocuiți un caracter într-un șir folosind Python

Acest tutorial acoperă diferitele moduri de a înlocui caracterul într-un șir Python: folosind metode de șir încorporate, expresii regulate și multe altele.

Șirurile din Python sunt structuri de date încorporate care stochează o secvență de caractere Unicode. Spre deosebire de unele structuri de date Python, cum ar fi listele și dicționarele, șirurile sunt imuabile. Înseamnă că nu puteți modifica un șir existent.

Cu toate acestea, este posibil să doriți să manipulați șirurile de caractere – să eliminați spațiile albe de început și de final, să schimbați majusculele, să înlocuiți un caracter cu altul și multe altele – atunci când lucrați cu ele.

Deci, cum manipulăm șirurile Python? Și cum înlocuim un caracter într-un șir Python? Vom răspunde la aceste întrebări în acest tutorial, concentrându-ne pe:

  • Imuabilitatea șirurilor Python
  • Metode de șiruri Python pentru manipularea șirurilor
  • Diferite moduri de a înlocui un caracter dintr-un șir

Să începem…

Imuabilitatea șirurilor Python

După cum am menționat, șirurile Python sunt imuabile. Deci nu puteți modifica un șir existent în loc. nu puteți modifica un șir existent în loc

De exemplu, luați în considerare șirul „Programare Python!”.

Puteți accesa un singur element al șirului folosind indexul și un subșir specificând felia cu începutul și sfârșitul, după cum se arată:

>>> my_str = "Python programming!"
>>> my_str[0]
'P'
>>> my_str[4]
'o'
>>> my_str[1:9]
'ython pr'
>>> my_str[9]
'o'

Să presupunem că doriți să înlocuiți litera „o” cu cifra „0”.

Știți că aveți un o la indicii 4 și 9 (vezi fragmentul de cod de mai sus). Dar dacă încercați să setați direct caracterul — la indexul specific — la „0”, veți obține următoarea eroare:

>>> my_str[4] = '0'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

Python oferă un set de metode de șir care acționează asupra unui șir existent și returnează un șir nou cu modificările necesare.

Citește și: Programe Python pe operațiuni cu șiruri.

Așadar, puteți utiliza metodele șirurilor cuplate cu liste de înțelegere, bucle și expresii regulate pentru a efectua sarcini de manipulare a șirurilor. În acest tutorial, vom analiza diferitele modalități de a înlocui un caracter într-un șir Python.

  Remediați camera Droid Turbo 2 care nu funcționează

Înlocuirea unui caracter în șirurile Python

Există multe cazuri de utilizare în care este posibil să doriți să înlocuiți caractere sau subșiruri într-un șir Python. Aici sunt câțiva dintre ei:

  • Curățarea textului: atunci când lucrați cu date text, poate fi necesar să curățați textul prin înlocuirea anumitor caractere. De exemplu, eliminarea sau înlocuirea caracterelor speciale, a spațiului alb suplimentar sau a simbolurilor nedorite.
  • Formatare: poate doriți să modificați formatarea textului, cum ar fi scrierea cu majuscule sau conversia textului în litere mici. De exemplu, asigurarea unei majuscule consecvente în titluri sau titluri.
  • Mascarea datelor: va trebui adesea să mascați informațiile sensibile, cum ar fi numerele personale de identificare sau numerele cărților de credit, pentru a proteja datele sensibile, păstrând în același timp formatul.
  • Adresele URL și gestionarea căilor: atunci când lucrați cu adrese URL sau căi de fișiere, poate fi necesar să înlocuiți anumite caractere pentru a vă asigura că sunt formatate corect și compatibile cu browserele web sau sistemele de fișiere.

Vom lua un exemplu simplu de înlocuire a unui caracter într-un șir.

Vom începe cu o abordare care utilizează bucle și instrucțiuni condiționale, apoi vom continua să discutăm despre alte metode mai bune pentru a obține același lucru.

Să luăm același exemplu de înlocuire a „o” cu „0” în șirul „Programare Python!”.

Iată cum putem trece prin șir folosind o buclă for și înlocuim caracterul specific:

original_string = "Python programming!"
new_string = ""
for char in original_string:
    if char == "o":
        new_string += "0"
    else:
        new_string += char
print(new_string)  

În această abordare, parcurgem manual fiecare caracter din șirul original. Dacă caracterul este „o”, adăugăm „0” la new_string; in caz contrar, adaugam acelasi caracter. În acest fel, efectuăm înlocuirea caracterelor și construim new_string.

# Output
Pyth0n pr0gramming!

Folosirea buclei for și a ramificării condiționale cu instrucțiunile if este greu de menținut. Mai ales când trebuie să înlocuiți un subșir sau mai multe caractere.

Există abordări mai bune pentru înlocuirea caracterelor sau a unui subșir și le vom analiza în secțiunile următoare.

#1. Folosind str.replace()

Putem folosi metoda string replace() pentru a înlocui un caracter sau un subșir cu un alt șir. Utilizarea str.replace(vechi, nou) înlocuiește toate aparițiile vechiului caracter sau subșir cu noul caracter sau subșir.

  4 Platforme de aplicații web cu autogăzduire

Aici folosim metoda replace() litera „o” cu cifra „0” în șirul original.

original_string = "Python programming!"
new_string = original_string.replace("o", "0")
print(new_string) 

Șirul rezultat este în new_string.

# Output
Pyth0n pr0gramming!

#2. Utilizarea listei de înțelegere și a metodei join().

Pentru a înlocui un caracter într-un șir Python, putem folosi lista de înțelegere împreună cu metoda șirurilor join().

Să vedem cum putem rescrie exemplul nostru:

  • Putem folosi o listă de înțelegere pentru a repeta fiecare caracter din șirul original. Dacă caracterul este „o”, îl înlocuim cu „0” și păstrăm același caracter în caz contrar.
  • Apoi, folosim str.join() pentru a combina aceste caractere într-un singur șir, rezultând new_string. Rețineți că aceasta este o alternativă mai concisă la bucla și ramificarea condiționată atunci când trebuie să înlocuiți un singur caracter într-un șir.
original_string = "Python programming!"
new_string = ''.join(['0' if char == 'o' else char for char in original_string])
print(new_string) 

Obținem rezultatul așteptat:

# Output
Pyth0n pr0gramming!

#3. Utilizarea expresiilor regulate

O altă metodă de înlocuire a caracterelor din șirurile Python este utilizarea expresiilor regulate (regex). Python vine cu sistemul încorporat re modul pentru operațiile de potrivire a expresiilor regulate. Cu regex, puteți specifica un model pentru a căuta, un șir prin care să căutați și un șir cu care să înlocuiți modelul potrivit.

Aici, folosim funcția sub() din modulul re cu sintaxa re.sub(pattern, replacement, string).

import re

original_string = "Python programming!"
new_string = re.sub(r'o', '0', original_string)
print(new_string) 

Modelul r’o’ se potrivește cu toate aparițiile literei ‘o’ din original_string și le înlocuiește cu ‘0’.

# Output
Pyth0n pr0gramming!

Puteți folosi expresii regulate pentru a potrivi modele mai complexe. Să luăm exemplul mascarii numerelor de card de credit. Să presupunem că vrem să înlocuim toate numerele, cu excepția ultimelor patru cifre, cu un „X”. Iată cum o putem face:

import re

def mask_credit_card(card_number):
    # Use regular expressions to match and replace characters
    masked_number = re.sub(r'\d(?=\d{4})', 'X', card_number)
    return masked_number

# Example usage:
credit_card_number = "1234567898765432"
masked_number = mask_credit_card(credit_card_number)
print(masked_number)

Și iată rezultatul:

# Output
XXXXXXXXXXXX5432

Pentru a menține expresia regex simplă, nu am inclus cratima, dar dacă doriți, puteți modifica exemplul după cum este necesar.

#4. Folosind str.maketrans() și str.translate()

Metodele str.maketrans() și str.translate() din Python sunt folosite pentru a efectua traducerea și înlocuirea la nivel de caractere în șiruri.

  Top 8 calculatoare de taxe pe vânzări pentru statele din SUA și alte țări

Cum funcționează str.maketrans()

Metoda maketrans() este folosită pentru a crea un tabel de traducere care specifică modul în care caracterele ar trebui să fie înlocuite într-un șir. Îl poți folosi cu sintaxa: str.maketrans(x, y). Aici:

  • x este șirul care conține caractere pe care doriți să le înlocuiți.
  • y este șirul care conține caractere cu care doriți să înlocuiți x.

Metoda maketrans() generează un tabel de translație bazat pe mapările de la x la y. Puteți utiliza apoi acest tabel de traducere cu metoda str.translate() pentru a efectua înlocuirea efectivă.

Cum funcționează str.translate().

Puteți folosi metoda str.translate() pentru a aplica tabelul de traducere creat de str.maketrans() unui șir. Efectuează înlocuirea caracter cu caracter pe baza mapărilor definite în tabelul de traducere. Și returnează un șir nou cu înlocuirile de caractere specificate aplicate.

Iată cum puteți utiliza metoda translate():

new_string = original_string.translate(translation_table)
  • original_string: șirul de intrare pe care doriți să îl modificați.
  • translation_table: Tabelul de traducere creat folosind str.maketrans() care definește mapările caracterelor.

Combinând ambele metode maketrans() și str.translate(), să rescriem exemplul nostru astfel:

original_string = "Python programming!"
translation_table = str.maketrans('o', '0')
new_string = original_string.translate(translation_table)
print(new_string)

Aici, creăm un tabel de traducere folosind str.maketrans(‘o’, ‘0’) pentru a specifica că ‘o’ trebuie înlocuit cu ‘0’. Apoi folosim metoda translate() pe original_string pentru a aplica această traducere, rezultând new_string.

# Output
Pyth0n pr0gramming!

Aceste metode sunt utile pentru sarcini precum înlocuirea unui caracter și alte manipulări la nivel de caractere în șiruri.

Concluzie

Să revizuim ceea ce am învățat.

Șirurile Python sunt imuabile. Deci, atunci când doriți să înlocuiți un caracter într-un șir Python, nu puteți doar reatribui caracterul la un anumit index. Am trecut peste următoarele abordări pentru a înlocui un caracter sau mai multe caractere într-un șir Python:

  • Utilizați str.replace(vechi, nou) pentru a înlocui toate instanțele vechiului cu un subșir nou.
  • De asemenea, puteți utiliza lista de înțelegere și metoda join(). Utilizați înțelegerea listei pentru a obține înlocuirea caracterelor și metoda join() pentru a uni lista de caractere într-un șir.
  • Puteți utiliza potrivirea modelului cu expresii regulate pentru a înlocui aparițiile unui caracter sau ale unui model. Utilizați funcția sub() cu re.sub(model, înlocuire, șir).
  • Utilizați str.maketrans() pentru a obține un tabel de traducere și metoda translate() pentru a aplica tabelul de traducere șirului original.

Asigurați-vă că codificați câteva exemple pentru a înțelege mai bine aceste tehnici. Apoi, aflați cum să eliminați ultimul caracter dintr-un șir Python.