Merhaba Python karakter dizilerini ve fonkisiyornlarını bu yazımızda ele alacağız. Yazılıma ilk olarak
Python’la başlamadıysanız sizlerinde bildiği gibi string işlemerler bütün yazılım dillerinde var. Bu işlemleri
daha kolaylaştırmak içinde bir çok metod oluşturulmuş durumda. Python C temelli bir yazılım dilidir. Eğer daha
önce C ile ilgilendiyseniz aslında string bir veri tipi olmadınğını biliyor olmalısınız. String şeklinde
yapmış oldğumuz tanımlamlara aslında bir karater dizisidir. Bilgisayarda her karaketrin ascii kodu bulunak
bulunmaktadır. Siz klavyeden “a” harfine bastığınızda bir 97 saysı işlenmektedir. Aslında 97 = “a” anlamına da gelir.
Harfler bir charlık alan tutular. Birden çok harfin yanyana gelmesi ise bir char dizisi anlamına gelmektedir.
char metin[]="çağlar";
C’de karakter dizileri bu şekilde oluşmaktadır. Aynı kullanım Python’da da geçerlidir.
Yani metin="çağlar"
şeklinde tanımlama yaptığınızda bir char dizisi oluşturmuş ve her harf dizinin bir
elemanı olarak yer almaktadır. Ekrana print(metin)
şeklinde yazdırdığınızda “çağlar” çıktısını alırken
aynı zamanda metin[0]
şeklinde yazdığınızda ise “ç” çıktısını alacaksınız yani her harf bir index numarsı,
alarak bir bütünü sağlamaktadır. Bunu aşağıdaki örenekle dahada pekitirelim.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | metin="çağlar" print(metin) print(metin[0]) print(metin[1]) print(metin[2]) print(metin[3]) print(metin[4]) print(metin[5]) ###################Ekran Çıktısı########################### #çağlar #ç #a #ğ #l #a #r ###################Ekran Çıktısı########################### |
Yukarıdaki örnekte karater dizisi numaralandırması 0’dan “sıfır” başlamıştır ve index numarası verilen her harf ekrana basılmıştır.
Örneğin girmiş olduğunuz bir karater dizisini filtreden geçirerek veya tek tek harflerin üzerinde işlem yaparak yazdırabilirsiniz.Tabi bunu yapabilmek için döngülerden yararlanacağız.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | metin="Mehmet Yaman" for harf in metin: print(harf) ###################Ekran Çıktısı########################### #M #e #h #m #e #t # #Y #a #m #a #n ###################Ekran Çıktısı########################### |
Karater dizilerinin uzunluklarını len(metin)
metoduyla öğrenebilirsiniz. Şimdi for döngüsü değilde
aynı öreneği while ile yazdıralım.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | metin="Mehmet Yaman" sayac=0; while sayac<len(metin): print(metin[sayac]) sayac+=1; ###################Ekran Çıktısı########################### #M #e #h #m #e #t # #Y #a #m #a #n ###################Ekran Çıktısı########################### |
Yukardaki örnekte değişken içersindeki metinlere index numaralarıyla erişim sağladık. Değişkenin uzunluğunu
len(metin)
metoduyla öğrendik.
Yine karakter dizilerinde index numalarını -1’den başlatırsan sondan başlayara başakardar karanteri listeyebilirsiniz. Bunu aşağıdaki örnekle daha iyi kavrayalım.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | metin="Mehmet Yaman" sayac=-1; while sayac>=-len(metin): print("index {} harf {} ".format(metin[sayac],sayac)) sayac-=1; ###################Ekran Çıktısı########################### #index n harf -1 #index a harf -2 #index m harf -3 #index a harf -4 #index Y harf -5 #index harf -6 #index t harf -7 #index e harf -8 #index m harf -9 #index h harf -10 #index e harf -11 #index M harf -12 ###################Ekran Çıktısı########################### |
Yine karater dizilerini range()
metoduylada yazdırabilirsiniz. Aşağıda buna bir örnek verilmiştir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | metin="Mehmet Yaman" for index in range(len(metin)): print("index {} harf {} ".format(metin[index],index)) ###################Ekran Çıktısı########################### #index M harf 0 #index e harf 1 #index h harf 2 #index m harf 3 #index e harf 4 #index t harf 5 #index harf 6 #index Y harf 7 #index a harf 8 #index m harf 9 #index a harf 10 #index n harf 11 ###################Ekran Çıktısı########################### |
Python Karater Dizilerini Dilimleme
Python karakter dizilerini biçimlendirme aslına bakarsanız belirli indexler arasındaki harfleri alıp onlar üzerinde işlem yapmanızı sağlar. Bunu aşağıdaki örnekle daha iyi kavrayalım.
1 2 3 4 5 6 7 8 9 10 | metin="Muvaffakiyetsizleştiricileştiriveremeyebileceklerimizdenmişsinizcesine" print(len(metin)) print(metin[0:12]) print(metin[12:15]) ###################Ekran Çıktısı########################### #70 #Muvaffakiyet #siz ###################Ekran Çıktısı########################### |
Yukardaki örnekte 70 harf uzunluğunda bir sözcük verilmiş ve bu sözcüğün sıfırıncı indeksinden başlayarak 12 indesine kadar (12. indeks hariç) olan karakterdizisi alınarak ekrana basılmıştır.
Yine aşağıda farklı index numaraları verilerek metin tekrardan biçimlendirilmiştir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | metin="Muvaffakiyetsizleştiricileştiriveremeyebileceklerimizdenmişsinizcesine" print(len(metin)) print(metin[0:12]) # ilk 11 harfi aldı "Muvaffakiyet" print(metin[:12]) # yine ilk 11 harfi aldı "Muvaffakiyet" print(metin[12:]) # ilk 11 karakterden sonrasını aldı "sizleştiricileştiriveremeyebileceklerimizdenmişsinizcesine" print(metin[0:-1]) # başından sonuna kadar aldı son "e" harfini dahil etmedi. "Muvaffakiyetsizleştiricileştiriveremeyebileceklerimizdenmişsinizcesin" print(metin[-11:]) # son 11 karateri aldı "sinizcesine" ###################Ekran Çıktısı########################### #70 #Muvaffakiyet #Muvaffakiyet #sizleştiricileştiriveremeyebileceklerimizdenmişsinizcesine #Muvaffakiyetsizleştiricileştiriveremeyebileceklerimizdenmişsinizcesin #sinizcesine ###################Ekran Çıktısı########################### |
Karater Dizinlerini Tersine Çevirme
Python’da karater dizilerini istediğiniz gibi index gruplaması yapara biçimlendirebilirsiniz. Şimdi değişkene atanan bir metini tersten yazdıralım.
1 2 3 4 5 | metin="Muvaffakiyetsizleştiricileştiriveremeyebileceklerimizdenmişsinizcesine" print(metin[::-1]) ###################Ekran Çıktısı########################### #eniseczinisşimnedzimirelkecelibeyemereviritşeliciritşelzisteyikaffavuM ###################Ekran Çıktısı########################### |
Yine karater biçimlendirmelere aşağıda farklı index gruplamamalarıyla örnekler verilmiştir.
1 2 3 4 5 6 7 8 9 10 | metin="Muvaffakiyetsizleştiricileştiriveremeyebileceklerimizdenmişsinizcesine" print(metin[0:12:1]) # 0. indexten 12. indekse kadar sırayla harfleri aldı. "Muvaffakiyet" print(metin[0:12:2]) # 0. indexten 12. indekse kadar ikişer harf arayla aldı. "Mvfaie" print(metin[::3]) # 0. indexten sonuna kadar üçer harf arayla aldı. "Maaysltiltirebekrieiizse" ###################Ekran Çıktısı########################### #Muvaffakiyet #Mvfaie #Maaysltiltirebekrieiizse ###################Ekran Çıktısı########################### |
Karakter Dizilerini Sıralama
Karakter dizileriniz isterseniz sorted(metin)
metodu ile alfabetik olarak sıralayabilirsiniz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | metin="MERYEM" print(sorted(metin)) ###################Ekran Çıktısı########################### #['E', 'E', 'M', 'M', 'R', 'Y'] ###################Ekran Çıktısı########################### <pre> <p>Yukarıda verilen karater dizisini alfabetik olarak sıralamıştır. Aşağıdaki örnekte ise sıralanan karakter dizinsi listelenmiştir. </p> <pre> metin="MERYEM" print(*sorted(metin)) #"E E M M R Y" print(*sorted(metin),sep="") #EEMMRY for harf in sorted(metin): print(harf) ###################Ekran Çıktısı########################### #E E M M R Y #EEMMRY #E #E #M #M #R #Y ###################Ekran Çıktısı########################### me |
Sıralama yaparken aşağıdaki örnekteki gibi Türkçe karater sorunu yaşayabilirsiniz.
1 2 3 4 5 6 7 | metin="çağlar" print(*sorted(metin),sep="") ###################Ekran Çıktısı########################### #aalrçğ ###################Ekran Çıktısı########################### |
Bu sorun “locale” modülünün sayfaya dahil edilmesi ve setlocale metodunun kullanılmasıyla çözülmüştür.
1 2 3 4 5 6 7 8 9 | import locale locale.setlocale(locale.LC_ALL, "Turkish_Turkey.1254") metin="çağlar" print(*sorted(metin,key=locale.strxfrm),sep="") ###################Ekran Çıktısı########################### #aaçğlr ###################Ekran Çıktısı########################### |
Python Karakter Dizilerinde Değişiklik Yapma
Karater dizilerini düzenlemek kullanıcıdan aldığınız verilerin sağlıklı ve düzenli bir şekilde veritabanına kaydının sağlanması için önemlidir.
Örneğin veritabanından çektiğiniz bir adreslemeyi link haline getirmek.
1 2 3 4 5 6 7 8 9 10 11 12 13 | s1="caglarbostanci.com" s2="w3schools.com" s3="jquery.com" s4="w3.org" for link in s1,s2,s3,s4: print("<li><a href='http://www."+link+"'>"+link[0:-4]+"<a></li>") ###################Ekran Çıktısı########################### #<li><a href='http://www.caglarbostanci.com'>caglarbostanci<a></li> #<li><a href='http://www.w3schools.com'>w3schools<a></li> #<li><a href='http://www.jquery.com'>jquery<a></li> #<li><a href='http://www.w3.org'>w3<a></li> ###################Ekran Çıktısı########################### |
Yukarıda veritabanından geldiğini varsaydığımız uzantırları dinamikbir link hakline getirdik.
Python dir() Fonsiyonu Kullanımı
Python dir()
fonksiyonu bir sınıftaki kullanılabilir metodları listelemeye yaramaktadır.
1 2 3 4 | print(*dir(str),sep=" , ") ###################Ekran Çıktısı########################### #__add__ , __class__ , __contains__ , __delattr__ , __dir__ , __doc__ , __eq__ , __format__ , __ge__ , __getattribute__ , __getitem__ , __getnewargs__ , __gt__ , __hash__ , __init__ , __init_subclass__ , __iter__ , __le__ , __len__ , __lt__ , __mod__ , __mul__ , __ne__ , __new__ , __reduce__ , __reduce_ex__ , __repr__ , __rmod__ , __rmul__ , __setattr__ , __sizeof__ , __str__ , __subclasshook__ , capitalize , casefold , center , count , encode , endswith , expandtabs , find , format , format_map , index , isalnum , isalpha , isascii , isdecimal , isdigit , isidentifier , islower , isnumeric , isprintable , isspace , istitle , isupper , join , ljust , lower , lstrip , maketrans , partition , removeprefix , removesuffix , replace , rfind , rindex , rjust , rpartition , rsplit , rstrip , split , splitlines , startswith , strip , swapcase , title , translate , upper , zfill ###################Ekran Çıktısı########################### |
str sınıfı karakter dizilerini düzenlemekte kullanılır. Bu sınıf içersinide kullanılabilir metodlar dir()
metoduyla listelenmiştir.
Bu sayede metodlarını bilmediğimiz sınfıları bu şekilde listeleyebiliriz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | for metod in dir(int): print(metod ) ###################Ekran Çıktısı########################### #__abs__ #__add__ #__and__ #__bool__ #__ceil__ #__class__ #__delattr__ #__dir__ #__divmod__ #__doc__ #.... ###################Ekran Çıktısı########################### |
İsterseniz yukarıdaki gibide listeleye bilirsiniz.
Gelende sınıf içerinsinde “__metod__” olanları elememiz gerekebilir bunlarıda aşağıdaki gibi eleyeceğiz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | for metod in dir(str): if "_" not in metod[0]: print(metod ) ###################Ekran Çıktısı########################### #capitalize #casefold #center #count #encode #endswith #expandtabs #find #....... ###################Ekran Çıktısı########################### |
Python enumerate() Kullanımı
enumerate("param")
param alına yazılan değer hakkında numaralandırama yaparak bir sıralama yapar.
geriye dizi değer dönderdiği için döngü ile yazdırmanız gerekebilir. Bize öğe ve sıra numarası hakkında bilgi verir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | print(*enumerate("caglarbostanci")) for n in enumerate("caglarbostanci"): print(n) ###################Ekran Çıktısı########################### #(0, 'c') (1, 'a') (2, 'g') (3, 'l') (4, 'a') (5, 'r') (6, 'b') (7, 'o') (8, 's') (9, 't') (10, 'a') (11, 'n') (12, 'c') (13, 'i') #(0, 'c') #(1, 'a') #(2, 'g') #(3, 'l') #(4, 'a') #(5, 'r') #(6, 'b') #(7, 'o') #(8, 's') #(9, 't') #(10, 'a') #(11, 'n') #(12, 'c') #(13, 'i') ###################Ekran Çıktısı########################### |
Yine enumerate()
fonksiyonu ile dir(str)
sınıfının metodlarını numaralandırdık.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | for index, metod in enumerate(dir(str)): print("{} => {}".format(index,metod)) ###################Ekran Çıktısı########################### #0 => __add__ #1 => __class__ #2 => __contains__ #3 => __delattr__ #4 => __dir__ #5 => __doc__ #6 => __eq__ #7 => __format__ #8 => __ge__ #9 => __getattribute__ #10 => __getitem__ #11 => __getnewargs__ #12 => __gt__ #14 => __init__ #15 => __init_subclass__ #16 => __iter__ #............... ###################Ekran Çıktısı########################### |
Python help() Metodu Kullanımı
Linux, windows bigi işletim sistemileri başta olmak üzere bir çok yazılım ve programda help()
fonksiyonu kullanılmaktadır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | print(help(dir)) ###################Ekran Çıktısı########################### #Help on built-in function dir in module builtins: # #dir(...) # dir([object]) -> list of strings # # If called without an argument, return the names in the current scope. # Else, return an alphabetized list of names comprising (some of) the attributes # of the given object, and of attributes reachable from it. # If the object supplies a method named __dir__, it will be used; otherwise # the default dir() logic is used and returns: # for a module object: the module's attributes. # for a class object: its attributes, and recursively the attributes # of its bases. # for any other object: its attributes, its class's attributes, and # recursively the attributes of its class's base classes. # #None ###################Ekran Çıktısı########################### |