недеља, 22. новембар 2020.

Rad sa String tipom podataka u Python programskom jeziku

Većina Vas koji dolazite na moj blog ili uči ili već dosta zna C# programski jezik. Kako to znam? Pa na osnovu pregleda, Vaših poruka i komentara. To takođe znači da većina Vas ili uči ili prelazi ili čisto iz radoznalosti uči i Python programski jezik. Zato ja uvek prilikom pisanja postova s vremena na vreme napravim neko poređenje sa programskim jezicima, da bi stvari bile još jasnije. U ovom postu ćemo se baviti string tipovima podataka u Python programskom jeziku. Svi vi koji ste C# programeri; Vi na string tipove podataka više gledate kao na neku vrstu specijalnog niza referentnog tipa podataka ili još bolje rečeno String je specijalna klasa koja predstavlja string tip promenjivih sa mnoštvom korisnih metoda za manipulisanjem karaktera. Takođe znate da jedna string promenjiva može da sadrži 2GB ili bilion karaktera. Međutim, Python programeri više gledaju string tip podataka kao niz. I to immutable – nepromenjiv. Ali koji može da sadrži i 3GB karaktera i više što pre svega zavisi od toga da li vi imate instaliranu Python 32-bitnu ili 64-bitnu instalaciju, pa zatim OS, koliko imate RAM memorije itd. To vam u prevodu znači da ne možete izbrisati neko slovo u tekstu već ga možete jedino zameniti; na primer praznim znakom; funkcijom replace() gde dolazi od stvaranje nove sekvence vašeg niza. Što u praksi isto radite i kad radite sa stringovima u C# programskom jeziku. Pa zato o razlici između tipa string u C# programskom jeziku i Python programskom jeziku mogu Vam samo reći „Šijo mu ga Đura“ ili „Ista stvar samo drugo pakovanje.“


( Stringovi u Python programskom jeziku )

Sve u svemu rad sa stringovima u Python programskom jeziku je sličan, možda za nijansu drugačije se deklariše, Python programeri promenjive pišu uglavnom malim slovima i ima tu nekih detalja koje će vam čak biti lakši nego kad radite u C# programskom jeziku; npr. manje tipkanja. A sad da se obratimo početnicima. Tipove podataka string koristite kad god radite sa tekstom. Da li Vi u promenjivu hoćete da smestite samo Vaše ime ili celu knjigu „Na Drini Ćuprija - na nemačkom jeziku“, jednostavno koristite promenjivu tipa string. String je jednostavno skup karaktera. Karakter može biti i slovo i broj i većina specijalnih znakova ali i prazan string. Zahvaljujući mnogobrojnim string funkcijama vi možete dobiti informacije; na primer koliko vaš tekst ima karaktera. Jednostavno koristite string funkciju len(). Međutim, ako želite da znate koliko vaš tekst ima slova. U tom ćete slučaju morati sami da isprogramirate funkciju u kojoj će te manipulisati sa jednom ili više string funkcija. Tu nastupate Vi i vaše programersko razmišljanje. Postoji najmanje tri načina kako ćete da isprogramirate funkciju koja će vam vratiti tačan broj slova u rečenici. Sad koji je najbolji od njih zavisi isključivo od vaših programerskih sposobnosti da razmišljate ili da guglate. Ali meni što prvo pada na pamet jeste koliko ima karaktera i koliko ima praznog prostora i da se to dvoje oduzme. Za obe stvari već postoje string funkcije u Python  programskom jeziku. E sad da li je to bolje ili da putem petlje brojite karaktere ignorišući prazan prostor u tekstu; eh to je sad već programersko razmišljanje, iskustvo i praksa. Dok guglanje je daj šta daš, samo nek radi i nemam vremena sad da razmišljam. Sve u svemu uradićemo dva programa koja će Vam kroz praktične primere pomoći da upoznate neke česte manipulacije stringovima koje će vam itekako trebati u nekim Vašim budućim projektima.

Deklarisanje string tipova podataka

U prošlom postu „Numerički tipovi podataka u Python programskom jeziku“ već smo deklarisali promenjive. Na isti način se deklarišu i string promenjive. Jednostavno se dodeli tekst promenjivoj. U drugim programskim jezicima poput C# programskom jezika, vi morate koristiti ključnu reč string ispred promenjive da bi ste naglasili da je vaša promenjiva tipa string dok to u Python programskom jeziku ne radite. Samo promenjivoj dodelite tekstualnu vrednost. Tekstualna vrednost se može dodeliti na tri načina. I to; stavljanjem teksta u navodnike, dvostruke navodnike ili trostruke navodnike. Kreirajte novi program i nazovite ga string_data_type.py Zatim unesite sledeći kod.

#! /bin/python3

message = 'This is a simple string data.'

print(message)

message = "This is also a simple string data."

print(message)

message = """This is also a simple string data."""

print(message)

print()

Prva message promenjiva sadrži tekst u jednostrukim navodnicima. Isti ovaj tekst možete dodeliti promenjivoj i sa dvostrukim ili trostrukim navodnicima i to će raditi. Često ćete čuti da je svejedno da li koristite jednostruke ili dvostruke navodnike, pogotovo ako ste početnik. Međutim, istina je da se najčešće koriste dvostruki navodnici, kao u C# programskom jeziku; jer i pored želje da se često koriste jednostruki navodnici; Engleski jezik često koristi jednostruke navodnike u svom pismu da to može postati iritirajuće da često koristite i jednostruke i dvostruke navodnike. Ali evo primera kada morate praviti promene. Dopišite sledeće linije koda.

# if you have ' - single quotes in your text

message1 = 'Your password is \'This is your password\'' # using special characters \'

message2 = "Your password is 'This is your password'" # using double quotes

print(message1)

print(message2)

print()

S obzirom da tekst koristi jednostruke navodnike, vi možete koristiti specijalni znak \'da dodelite tekst promenjivoj ili da ga jednostavno prikažete. Ili možete koristiti dvostruke navodnike, što se češće čini.

# if you have " - double quotes in your text

message1 = "Your password is \"This is your password\"" # using special characters \"

message2 = 'Your password is "This is your password"' # using single quotes

print(message1)

print(message2)

print()

Ovde je situacija obrnuta. S obzirom da tekst koristi dvostruke navodnike, vi možete koristiti specijalni znak  \" da dodelite tekst promenjivoj ili da ga jednostavno prikažete. Ili možete koristiti jednostruke navodnike. Međutim, šta je sa trostrukim navodnicima. Dodajte sledeći kod:

# if you have ' - single and " - double quotes in your text or the space around text is matter

message3 = """

                    This password is 'This is your password'.

                This password is "This is your password".

 

           """ # three double qouts

print(message3)

print()

Trostruki navodnici se inače retko koriste osim u slučajevima kada imate više linijske redove teksta. Želite tačno da ispišete tekst kakav on jeste sa svim prazninama i da svaka rečenica u tekstu se ispiše u istom redu bez pomeranja kako je napisana u tekstu. Posebno je idealno rešenje ukoliko imate tekst koji sadrži i jednostruke i dvostruke navodnike. Kad god imate mnogo teksta u više redova, trostruki navodnici su idealno rešenje. Pokrenite program da vidite kako funkcioniše:

This is a simple string data.

This is also a simple string data.

This is also a simple string data.

 

Your password is 'This is your password'

Your password is 'This is your password'

 

Your password is "This is your password"

Your password is "This is your password"

 

 

                    This password is 'This is your password'.

                This password is "This is your password".

Kako se kreira ovaj isti program možete pogledati i na video-u.


( Python - 7. A String Data Type in Python )

Rad sa stringovima

Sad kad ste detaljno shvatili kako se deklarišu i kako se pravilno dodeljuje neka tekstualna vrednost, sad možemo da vidimo kako da manipulišemo sa stringovima. U svetu programiranja vi imate računske programe poput bankarskih gde vam nije toliko potrebno manipulisanje stringovima, međutim zamislite da programirate gramatiku Nemačkog jezika. Da hoćete na primer da neki nemački glagol promenite kroz sva glagolska vremena. Tada vam je manipulacija stringovima ključni faktor. Kreirajte novi program i nazovite ga using_strings.py Unesite sledeće linije koda:

#! /bin/python3

print('_______________________________________________________________________')

print()

# simple declaration string variables

# the first simple sentece

message1 = "I study Python programming language."

print(message1)

# the second simple sentece

message2 = "And I like it."

print(message2)

print()

U prethodnom kodu smo pripremili jednu liniju koja će nam na ekranu nacrtati liniju i odvajati rezultate, funkcija print() bez parametara će nam preskakati jedan red u terminalu i tu su dva različita teksta; dve različite rečenice sa kojima ćemo manipulisati. I za početak obadve rečenice smo ispisali na terminal:

I study Python programming language.

And I like it.

Pa krenimo, na primer kako da spojimo ova dva teksta u jedan. Ukucajte sledeće linije koda.

# how to put together more strings

message3 = message1 + " " + message2

print(message3)

print()

Najlakši način da spojimo ova dva teksta je da saberemo dve promenjive. Ali obratite pažnju da se stringovi spajaju operatorom + i da smo u ovom slučaju dodali prazan string. Pokrenite program.

I study Python programming language. And I like it.

Promenjivu message3 možete prikazati i na sledeći način kao niz sa velikim zagradama [ ].

# how to print string data like as an array

print(message3[:])

print()

Ukoliko želite da ispišete celi tekst u terminal jednostavno ne dodeljujete ni jedan argument [:].

I study Python programming language. And I like it.

Šta na primer, ako želite da ispišete Vaš tekst naopako. Kako to da uradite? Unesite sledeći kod:

# how to print upside down string

print(message3[::-1])

print()

Našem string tipu očigledno možete dodeliti tri argumenta na tri različite pozicije. Kad dodelimo trećoj poziciji negativni broj -1 onda dobijamo rešenje našeg zadatka:

 .ti ekil I dnA .egaugnal gnimmargorp nohtyP yduts I

Zamislite sada, mi ne želimo da brojimo gde nam počinje druga rečenica u tekstu, nego na primer jednostavno želimo da znamo gde nam je tačna pozicija velikog slova A

# how to get A character position in the string

print(message3.index('A'))

print()

Od velike nam je pomoći što je veliko A jedinstven karakter u celom tekstu. Inače bi izvesti to bilo malo komplikovanije.

37

Sad kad imate tačnu traženu poziciju, lako možete na primer da odredite od kog karaktera ili pozicije do kog karaktera ili pozicije želite da prikažete deo teksta u terminalu.

# how to print from 0 to until 37th position in the string

print(message3[:37])

print()

Prethodni kod će nam prikazati od 0 do 37 karaktere našeg teksta. Znači našu prvu rečenicu:

I study Python programming language.

A kako da mi prikaže samo drugu rečenicu? Unesite sledeći kod: 

# how to print from 37th position in the string 

print(message3[37:])

print()

Znači umesto da navedemo prvi argument naše pozicije 37, mi tu poziciju stavimo kao drugi argument. I šta onda dobijemo.

And I like it.

A mogu li nam ovi trikovi sa pozicijama u nizu pomoći da uradimo neki komplikovaniji zadatak. Na primer da nam ispiše prvih 14 karaktera našeg teksta ali samo svako drugo slovo.

# how to print every second character in the first 14 positions

print(message3[0:14:2])

print()

print('_______________________________________________________________________')

print()

Ovakvi trikovi su idealni za hakersko komplikovanje šifrovanja vaših tekstova.

IsuyPto

Pogledajmo sad kako da uz pomoć string funkcija uradimo neke od najčešćih manipulacija teksta. Na primer ako želite da se ceo vaš tekst prikaže malim slovima.

# how to change characters in the lower characters

print(message3.lower())

print()

Jednostavno koristimo funkciju lower(). Ukoliko ste početnik i ne znate ni šta su metode i funkcije, ovo ipak možete da razumete. Funkcija lower() je odradila sav posao za vas.

i study python programming language. and i like it.

Ako znate kako da promenite sav tekst u mala slova, onda je logično da se pitate kako da sav tekst promenite u velika?

# how to change characters in the upper characters

print(message3.upper())

print()

Samo upotrebite drugu string funkciju sa nazivom upper(). Toliko jednostavno.

I STUDY PYTHON PROGRAMMING LANGUAGE. AND I LIKE IT.

Znate li šta je najveća iritacija kada tipkate na Nemačkom jeziku. Svaku drugu ili treću reč morate da kucate početnim velikim slovom. Pogledajte šta radi string funkcija capitalize()

# how to change characters in the capitalize characters

print(message3.capitalize())

print()

print('_______________________________________________________________________')

print()

Ona menja prvo slovo u veliko ukoliko je malo ili ostavlja isto ukoliko je veliko. Zamislite kad kucam na Nemačkom jeziku. da ne moram kucati veliko početno slovo kod nemačkih imenica. Da to tekst editor radi umesto mene. E to bi bilo odlično napraviti. String funkcija capitalize() bi bila idealna za taj posao. 

I study python programming language. and i like it.

Međutim, stvari u programiranju nisu uvek predvidljive. Ponekad tražimo od korisnika da nam unese ascii karaktere jer mi možda ne radimo sa uncode karakterima; dok on možda greškom ili namerno ne prosledi nešto drugo. Ko se danas ograničava na ascii ? Nemam pojma, verovatno neko ko programira za mikro procesore gde je memorija bitan faktor; ali sledeća string funkcija može pomoći.

# how to check if characters are ascii characters

print(message3.isascii())

print()

String funkcija jednostavno proverava da li je naš string tekst u ascii kodu i vraća nam odgovor ili vrednost u boolean tipu podataka. Šta je boolean tip podataka, pogledajte ovde.

True

Kako ćemo da znamo da li je korisnik uneo samo cele brojeve ili slova?

# how to check if characters are alphabet characters

print(message3.isalpha())

print()

Koristićemo string funkciju isalpha(). Rezultat nebi trebao da Vas iznenadi jer naš tekst ipak sadrži . tačku.

False

Ali isto tako možemo da proverimo i neke jednostavnije stvari. Na primer da li se na forumu neko dernja, tj. koristi sva velika slova? 

# how to check if characters are upper characters

print(message3.isupper())

print()

U našem slučaju, mi smo pristojni.

False

Kako bi ste proverili da li korisnik piše sve mala slova?

# how to check if characters are lower characters

print(message3.islower())

print()


print('_______________________________________________________________________')

print()

Da, string funkcija islower() u ovom slučaju je rešenje.

False

Ono što ćete vi najčešće da proveravate u Vašim programima jeste; da li je korisnikov unos broj iako je predstavljen kao tekst.

message4 = '2021' 

# how to check if characters are digital characters

print(message4.isdigit())

print()

String funkcija isdigit() proverava da li je tekst broj. U našem slučaju jest.

True

Ali šta ako vi radite sa finansijama i interesuje vas da li taj tekst može imati broj tipa decimal?

# how to check if characters are decimal characters

print(message4.isdecimal())

print()

print('_______________________________________________________________________')

print()

Onda koristimo string funkciju isdecimal(). Tekstualni broj 2021 se definitivno može pretvoriti u decimalni broj.

True

Sada ćemo da uradimo nešto korisno. Sećate se one naše dve rečenice ispisane u jednom tekstu. Pa to su dve rečenice. Kako da je prepravimo da bude jedna prava rečenica? Prvo moramo ukloniti tačke.

# how to remove . character from the string

message4 = message3.replace(".""")

print(message4)

print()


Da bi smo dobili jednu spojenu rečenicu.

I study Python programming language And I like it

Zatim treba da veliko slovo A zamenimo sa malim.

# how to replace A with a character from the string

message5 = message4.replace("A""a")

print(message5)

print()

I to onda izgleda ovako:

I study Python programming language and I like it

Ovom tekstu ostavljam samo Vama da mu na kraju dodate tačku. A mi idemo dalje i pitamo se ako možemo sastaviti rečenicu, kako je možemo podeliti ili izvaditi neke reči iz teksta:

# how to split some words from the string

print(message5.split("programming language "))

print()

Onda ćemo dobiti nešto ovako; dva string niza u jednom nizu.

['I study Python ', 'and I like it']

I za kraj ovog programa; šta ako vi želite da dodate neke druge stringove vašem stringu na određenom mestu u rečenici. Pogledajte sledeći kod. On sam po sebi objašnjava kako se to može uraditi i to na dva načina.

# how to add some words in the string

a = "to"

b = "every"

message6 = "I like %s do it %s day." % (a,b)

print(message6)

print()

# or

message6 = f"I like {a} do it {b} day." 

print(message6)

print()

print('_______________________________________________________________________')

print()

Drugi način je bolji, moderniji i lakši. Jednostavno koristite prefiks f. To nije jedini prefiks koji se koristi u Python programskom jeziku. Na primer možete da koristite i prefiks u za uncode karaktere. Toliko za sada o radu sa stringovima. Kad pokrenete ovaj deo koda, dobićete identične dve rečenice.

I like to do it every day.

I like to do it every day.

Kako se sav ovaj program kreirao možete pogledati i na video-u:


( Python - 8. How to Use Strings in Python )


 

 


 


Нема коментара:

Постави коментар