Treballant amb text
Els textos no són una caixa tancada: pots mirar-ne caràcters, tallar-los i transformar-los.
Accedir a un caràcter: indexació
Una cadena de text (en anglès, string) és una seqüència de caràcters. Pots agafar un caràcter concret escrivint el seu índex entre claudàtors [ ]. El primer caràcter sempre té índex 0:
Els índexs negatius compten des del final: -1 és l'últim caràcter, -2 el penúltim, i així successivament:
Prova a canviar el text i els índexs per explorar com funciona:
Llargada amb len()
La funció len() retorna el nombre de caràcters d'un text, espais inclosos:
Combinat amb l'indexació, len() és molt útil per accedir a l'últim caràcter sense saber d'avançada quant és de llarg el text:
Retallar un fragment: slicing
En lloc d'agafar un sol caràcter, pots agafar un tros del text indicant inici i fi separats per :. La fi no s'inclou, igual que range():
El tercer valor opcional és el pas. Un pas de -1 recorre el text al revés — una manera còmoda d'invertir una cadena:
Experimenta retallant la teva pròpia cadena:
Mètodes habituals de text
Els textos tenen mètodes propis que es criden amb un punt: text.metode(). Cap d'ells modifica el text original; tots retornen un text nou.
.upper() i .lower() — converteixen a majúscules o minúscules:
.strip() — elimina els espais en blanc (i salts de línia) dels extrems. Molt útil per netejar l'entrada de l'usuari:
.replace(vell, nou) — substitueix totes les aparicions d'una subcadena per una altra:
.split() — divideix el text en una llista de paraules, separant pels espais (o per un altre separador que li passis):
Comprovar si un text conté alguna cosa
L'operador in comprova si una subcadena és dins d'un text. Retorna True o False:
Els mètodes .startswith() i .endswith() comproven si un text comença o acaba d'una manera concreta:
Recórrer un text amb for
Pots iterar directament sobre els caràcters d'un text amb for c in text:, igual que faries amb una llista de nombres:
Combinant el for amb un condicional, pots filtrar o comptar caràcters concrets. Per exemple, comptar quants espais té una frase:
Errors típics
1. IndexError: accedir a un índex que no existeix — si el text té 5 caràcters, l'índex vàlid va de 0 a 4 (o de -1 a -5 en negatiu):
2. TypeError: intentar modificar un caràcter — els textos a Python són immutables: no es pot canviar un caràcter de forma directa. Per modificar-ne una part, has de construir un text nou (per exemple, amb .replace() o concatenació):
3. Oblidar que .split() retorna una llista, no una cadena — si intentes fer un slice o cridar un mètode de text sobre el resultat de .split(), obtindràs un error:
Exercici
a, e, i, o, u) conté. El programa ha de funcionar tant amb majúscules com amb minúscules.
Per exemple, amb la paraula Universitat la sortida ha de ser 5, i amb hola ha de ser 2.
Pista: converteix la paraula a minúscules amb .lower() abans de comptar, i recorre-la caràcter a caràcter amb for. (Per simplificar, aquest exercici no compta les vocals amb accent — només les vocals sense accent.)
Resum
text[i]accedeix al caràcter de la posiciói; els índexs negatius compten des del final (text[-1]és l'últim).len(text)retorna el nombre de caràcters del text.text[inici:fi]retorna un fragment (la fi no s'inclou);text[::-1]inverteix la cadena.- Els mètodes
.upper(),.lower(),.strip(),.replace()i.split()retornen un text nou sense modificar l'original. incomprova si una subcadena és dins d'un text;.startswith()i.endswith()comproven els extrems.- Pots recórrer cada caràcter d'un text amb
for c in text:, igual que iteraries sobre una seqüència de nombres.