• Un string reprezintă orice tip de text inclus între ghilimele simple, duble sau triple.
• De exemplu: s = 'Python' este același lucru cu s = "Python" sau s =
"""Python""".
• Între ghilimele simple şi duble nu există nici o diferenţă, însă
ghilimelele triple sunt folosite pentru a reprezenta texte care se întind pe mai multe linii. Mai mult, şi ghilimelele triple pot fi simple sau duble, fără nici o diferenţă între acestea. Exemplu: Deşi interpretatorului Python nu îi pasă ce tip de ghilimele folosim pentru a defini stringul nostru, suntem obligaţi totuşi să încheiem reprezentarea cu acelaşi tip de ghilimele cu care am început. Prin urmare, nu sunt permise scrieri precum s = 'text“
Caracterele sunt mai greu de reprezentat pentru un calculator, aşa
că pentru a-şi uşura munca, se foloseşte de un encoding. Un encoding va indica o reprezentare a caracterelor într-un format mai uşor de înţeles pentru calculator.
De exemplu, ASCII este un format de encoding mai vechi folosit
pentru a reprezenta 256 de caractere (printre care toate cele de pe tastatura voastră). Acest format leagă orice caracter la un număr întreg cuprins între 0 şi 255. Numărul 255 nu este întâmplător, această reprezentare reuşind să reprezinte caractere în 8 biţi (2 ** 8 = 256). ASCII este totuşi un model de reprezentare destul de vechi şi depăşit de multitudinea de caractere disponibile în zilele noastre. Din acest motiv există multe alte sisteme de encoding. În mod implicit, Python va folosi sistemul UTF-8 pentru a reprezenta caracterele sale.
Putem accesa reprezentarea unui caracter folosind funcţia ord(caracter),
unde caracter trebuie să fie un string de lungime 1.
Inversul acestei funcţii este chr(numar), unde numar este un număr
întreg, iar rezultatul funcţiei este caracterul reprezentat de acel număr. Operații cu STRINGRI Un string Python poate fi privit drept o listă de caractere aflate într-o anumită ordine. Astfel, putem selecta un substring al stringului nostru folosind paranteze pătrate [ ].
Dacă vrem să selectăm un singur caracter, este suficient să specificăm în
parantezele pătrate poziţia caracterului în string.
Dacă vrem să selectăm mai multe caractere consecutive deodată, atunci
avem la dispoziţie "notaţia slice". Notaţia slice permite selectarea unor caractere dintr-un interval (selectarea unui substring). Pentru a specifica acest interval, în interiorul parantezelor pătrate scriem poziţiile de început şi de final, despărţite prin semnul : . Dacă poziţia de început este primul caracter al stringului sau poziţia de final este ultimul caracter, atunci putem omite precizarea acelei poziţii. Operații cu STRINGRI Exemplu: Observaţie: numărătoarea poziţiilor (indecşilor) caracterelor din string începe de la 0. Astfel, în exemplele prezentate, pe prima poziţie se află caracterul P, pe a doua poziţie caracterul y şi aşa mai departe.
Atenţie: intervalul descris de notaţia slice
este închis la capătul din stânga şi deschis la cel din dreapta. Cu alte cuvinte, elementul de pe poziţia de start a notaţiei va fi inclus în rezultat, iar caracterul indicat de poziţia de final nu va fi inclus. Observăm în exemplul, pentru cazul s[2:4] au fost selectate caracterele t aflat pe poziţia 2 şi h aflat pe poziţia 3, dar o aflat pe poziţia 4 nu a fost inclus. Operații cu STRINGRI Până acum am prezentat o singură operaţie pe stringuri: operaţia de selectare. În continuare vom prezenta alte operaţii utile atunci când avem de-a face cu un astfel de tip de date.
Operaţiile aritmetice de adunare şi înmulţire sunt posibile asupra
stringurilor, dar au un efect poate neaşteptat. După cum puteţi observa, adunarea a două stringuri rezultă în concatenarea acestora, iar înmulţirea unui string cu un număr natural, va multiplica textul stringului de atâtea ori cât indică numărul ales.
Atenţie: pentru adunare, ambele
elemente trebuie să fie string, iar pentru înmulţire este necesar un string şi un număr întreg. Operații cu STRINGRI
Pentru a verifica apartenenţa unui substring la un string, putem
folosi cuvântul cheie in. Operații cu STRINGRI Mai jos voi prezenta câteva metode utile în lucrul cu stringurile:
str(n) - realizează convertirea unui obiect care nu este string, într-un
string (de exemplu 1 devine "1" min(s), max(s) - returnează litera minimă/maximă din string (atenţie, toate literele mari vor fi considerate "mai mici" decât orice literă mică). s.lower(), s.upper() - returnează o copie a stringului cu toate literele mici sau cu toate literele mari len(s) - returnează un număr corespunzător dimensiunii stringului (numărul de caractere care îl alcătuiesc) s.split(delimitator) - împarte stringul în bucăţi delimitate de parametrul "delimitator". Rezultatul va fi o listă, iar delimitatorul trebuie sa fie string [ ] - slicing - extrage un subsir dintr-un sir. lstrip() - elimina spațiile de la începutul șirului. rstrip() - elimină spațiile de la sfârșitul șirului Operații cu STRINGRI find() – găsește un subșir într-un șir și elimină poziția unde începe subșirul count() - numară aparițiile unui subșir într-un șir replace() – înlocuiește un subșir cu un altul upper(), lower(), title(), capitalize() – înlocuiește un subșir cu un altul split() - împarte șirul în subșiruri, în funcție de parametrul lui split() ord (caracter) - returnează codul Unicode al unui caracter chr (numar) - returnează caracterul corespunzător codului Unicode primit ca parametru
NOTĂ: Pentru mai multe detalii despre funcţiile şi metodele suportate
de stringuri, consultaţi documentaţia oficială, ca de exemplu: https://www.w3schools.com/python/python_strings.asp Formatarea TEXTULUI O parte importantă în lucrul cu stringurile o reprezintă formatarea acestora. Prin formatare vom înțelege posibilitatea de a crea un string în mod dinamic folosind valori păstrate în variabile.
Prima şi cea mai simplă metodă de formatare o reprezintă concatenarea
stringurilor implicate folosind operaţia de adunare:
Observaţi convertirea variabilei ani folosind funcţia str(). Fără această
convertire, am primi eroare deoarece nu putem adăuga un string şi un număr. Formatarea TEXTULUI O altă metodă de formatare o reprezintă folosirea caracterului %
%s indică faptul că pe acea pozitie se asteaptă un element de tip string,
iar %d indică prezenţa unui element de tip întreg.
Observaţi totuşi absenţa funcţiei de convertire a variabilei ani. Din
moment ce am specificat deja în interiorul formatării că ne aşteptăm la un număr pentru poziţia aceea, Python va realiza singur conversia. Totuşi ordinea parametrilor din paranteză contează. Formatarea TEXTULUI Formatarea TEXTULUI A treia metodă de formatare a stringurilor este metoda format()
Observăm că nu a fost nevoie de convertirea variabilei ani şi nici de
specificarea unui tip de date pentru poziţiile în care vor urma să fie introduse valorile variabilelor noastre. Cu toate acestea, ordinea parametrilor încă este importantă ceea ce nu mereu ne convine. Formatarea TEXTULUI Din fericire, acoladele pot conţine informaţii despre parametrii. Astfel, dacă punem un număr în interiorul acoladelor, atunci Python va asocia acel număr cu poziţia parametrilor din metoda format (atenţie totuşi, numărătoarea începe de la 0 şi se poate continua până la numărul parametrilor - 1)
Mai mult, această metodă ne permite refolosirea parametrilor prin
repetarea unui index (numărul parametrului) Formatarea TEXTULUI Deja avem mai multă flexibilitate, dar încă nu e suficient. Ordinea parametrilor este încă importantă. Pentru a rezolva şi acest ultim inconvenient, putem scrie în locul numerelor dintre acolade, denumiri pentru variabilele care vor fi înlocuite (denumirile acestea pot fi diferite de numele variabilelor). În acest mod, poziţia parametrilor nu va mai conta pentru că vor fi identificaţi prin acea denumire. La fel ca în cazul indecşilor, şi această metodă ne permite să repetăm un anumit parametru prin reutilizarea numelui său în string. Formatarea TEXTULUI Ultima metodă de formatare a fost adaugată în Python 3.6 şi presupune adaugarea caracterului f înaintea şirului nostru de caractere, iar între acolade, vom trece numele variabilelor pe care vrem să le includem în formatare (de această dată, numele variabilelor din acolade trebuie să coincidă cu cel din declarare).
Această metodă este interesantă deoarece tot ce este în interiorul acelor
acolade, va fi interpretat de Python. Astfel, putem avea expresii (operaţii aritmetice, apeluri de funcţii etc) direct în interiorul formatării. Exemplu: Exemplul Nr.1 Am mai folosit șirurile de caractere până acum. Se atribuie valorile simplu, scriind textul între apostrofuri, ghilimele sau o combinație de trei cu trei, pentru a scrie un text pe mai multe rânduri. Exemplul Nr.2 Operatorul de adunare "+" are rolul de a alătura (concatena) două sau mai multe șiruri de caractere.
Pentru două valori numerice, operatorul "*" reprezintă înmulțirea. În
cazul unor operanzi de tip str, acesta are rolul de a multiplica valoarea (textul). Exemplul Nr.3 Considerăm o variabilă s1 care reține șirul "caracter". Indicele primului caracter este 0, iar ultimul 7, adică 8-1, unde 8 este numărul de caractere conținute de obiect. Folosind un anumit indice și operatorii "[" și "]" împreună, avem acces la caractere: Exemplul Nr.4 Pentru a obține lungimea unui șir de caractere, vom folosi funcția len(nume_variabilă). Precizăm din nou că indicii pornesc de la 0 și se opresc la len()-1. Exemplul Nr.5 Putem verifica dacă un caracter ori un subșir este prezent într-un șir de caractere. Analizați operatorii binari in și grupul not in în programul următor: EXERSEAZĂ
Se citeste un sir de caractere care reprezinta CNP-ul unei persoane. Să se verifice
corectitudinea lui:numărul de caractere să fie 13 și toate caracterele să fie cifre.