Merhaba Arkadaşlar,
Mobilhanem.com da Python Dersleri serisinin bu dersinde Python da Karakter Dizileri ve Metotlarının ne olduğunu ve bunlarla ilgili uygulamalar yapmaya çalışacağım. Hadi başlayalım o zaman.
Karakter Dizleri
Daha önceki derslerimizde de karakter dizilerinin ne olduğunu ve nasıl kullanıldığını kısaca anlatmıştım. Tekrar açıklarsak karakter dizileri Python da adında anlaşılacağı karakterlerden oluşur ve bu karakter dizileri immutable yani değiştirilemez veri tipidir. Bu demek oluyor ki biz karakter dizilerine ekleme çıkarma ve değiştirme gibi işlemler yapamıyoruz.
Karakter Dizilerinin Kullanımı
Karakter dizilerini biz tırnak içinde tanımlıyoruz ve bunu üç farklı şekilde yapıyorduk.
- Tek tırnak
- Çift tırnak
- Üç tırnak
Bunları daha önceki derslerde detaylı bir şekilde anlatmıştım ben derste anlatmayacağım eğer siz eksiğiniz olduğunu düşünüyorsanız buradan o ders ulaşabilirsiniz.
Karakter Dizilerinin Metotları
Her derste yaptığımız gibi dir() fonksiyonu ile karakter dizilerinin metotlarını yazdıralım;
['__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', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
Diğer derslerde yaptığımız gibi bu derste de __X__ şeklindeki özel metotları dışındaki metotları teker teker örneklerle göstermeye çalışacağım.
['capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
Capitalize Metodu:
Bu metot bir Karakter dizisi içindeki ilk harfi büyük harfe çevirir.
metin ="mobilhaben.com python dersleri" print(metin.capitalize()) Mobilhaben.com python dersleri
Title Metodu:
Capitalize metodu karakter dizinin ilk harfini büyük harfe çeviriyordu bu metot ise Karakter dizisi içindeki bütün kelimelerin ilk harfini büyük harfe çevirir.
metin ="mobilhaben.com python dersleri" print(metin.title()) Mobilhaben.Com Python Dersleri
Count Metodu:
Bu metot bir karakter dizisi içindeki istenilen karakterden kaç tane olduğunu bulmaya yarar.
metin ="Mobilhanem.com Python Dersleri" print(metin.count("e")) 3
Upper Metodu:
Bu metot karakter dizisi içindeki bütün küçük harfleri büyük harfe çevirir.
metin ="Mobilhanem.com Python Dersleri" print(metin.upper()) MOBILHANEM.COM PYTHON DERSLERI
Lower Metodu:
Bu metot da upper metodunun tersine bütün büyük harfleri küçük harfe çevirir.
metin ="MOBİLHANEM.com Python Dersleri" print(metin.upper()) mobi̇lhanem.com python dersleri
Swapcase Metodu:
Bu metot eğer harf küçük ise büyük harfe çevirir eğer büyükse küçük harfe çevirir.
metin ="MOBİLHANEM" print(metin.swapcase()) mobi̇lhanem metin ="mobilhanem" print(metin.swapcase()) MOBILHANEM metin ="Mobilhanem" print(metin.swapcase()) mOBİLHANEM
Center Metodu:
Bu metot ile belirtildiği miktar kadar karakteri sağdan ve soldan boşluk bırakarak ortalar.
metin ="Python" print(metin.center(5)) Python
Eğer sadece sağında veya solunda boşluk bırakmak istiyorsanız; rjust ve ljust metotlarına bakabilirsiniz.
Zfill Metodu:
Biz center, rjust ve ljust metotları ile dizinin sağında veya solunda boşluk atıyorduk bu metot ile karakter dizimizi karakter belirttiğimiz karakter sayısından ne kadar az ise başına o kadar sıfır ekler örnekle gösterince daha iyi anlayacaksınız.
metin ="Python" print(metin.zfill(8)) 00Python
Biz karakter dizinin 8 karakterli olmasını istiyoruz ama karakter dizisi 6 karakterli olduğu için 2 tane sıfır başa ekledi.
Replace Metodu:
Bu metot Karakter dizisi içindeki bir karakteri başka bir karaktere çevirir örneğin:
metin ="Mobilhanem.com Python Dersleri" print(metin.replace("e","x")) Mobilhanxm.com Python Dxrslxri
E harflerini x harfleri ile değiştirdim.
Not:
Biz bu metotlar ile büyük harfe çevirme küçük harfe çevirme karakterleri değiştir gibi işlemler yaptık ama burada dikkat etmeniz gereken bir şey var karakter dizileri değiştirilemez veri türü olduğu için aslında değiştirmiyor sadece bize o şekilde gösteriyor hemen bir örnekle göstereyim.
metin ="Mobilhanem.com Python Dersleri" print(metin.replace("e","x")) print(metin.upper()) print(metin) Mobilhanxm.com Python Dxrslxri MOBILHANEM.COM PYTHON DERSLERI Mobilhanem.com Python Dersleri
Gördüğünüz gibi karakter dizisi değişmiyor sade bize o şekilde gösteriyor.
Startswith Metodu:
Adında anlaşılacağı gibi bu metot karakter dizinin belirlediğimiz karakter ile başlayıp başlamadığını sorguluyor ve buna göre bize True veya False değerler veriyor.
metin ="Mobilhanem.com Python Dersleri" print(metin.startswith("M")) True
Biz karakter dizisinin M harfi ile başlayıp başlamadığını kontrol ettik. Doğru olduğu için bize True değeri verdi. Peki kafanıza şu şekilde bir şey takıldı mı sadece bir karakter mi kontrol ediyor diye. Hemen göstereyim
metin ="Mobilhanem.com Python Dersleri" print(metin.startswith("Mobil")) True
Gördüğünüz gibi birden fazla karakter ile kontrol edebiliyoruz.
Endswith Metodu:
Bu metot da Startswith metodunun aksine istenilen karakter veya karakterler ile bitip bitmediğini kontrol ediyor.
metin ="Mobilhanem.com Python Dersleri" print(metin.endswith("Dersleri")) True
Isalpha Metodu:
Bu metot ise bir karakter dizisinin alfabetik olup olmadığını kontrol ediyor.
Bize True veya False değer veriyor.
metin ="Mobilhanem" print(metin.isalpha()) True
Peki karakter dizimiz şu şekilde olsaydı ne olurdu:
metin ="5555" print(metin.isalpha()) False
Gördüğünüz gibi karakter dizleri sayı olduğu için False sonucu verdi.
Isdigit Metodu:
Bu metot da Isalpha metodunun tersine karakter dizinin bir sayısal bir değer olup olmadığını kontrol ediyor.
metin ="5555" print(metin.isdigit()) True
Isalnum Metodu:
Biz Isalfa ile karakter dizinin alfabetik karakterlerden Isdigit ile de sayısal dizi olup olmadığını kontrol ediyorduk. Eğer karakter dizisi hem alfabetik hem de sayısal yani numerik değer alıyorsa biz alfabetik olup olmadığını kontrol etmeye çalıştığımızda içinde numerik karakter olduğu için False değeri veriyordu bu sefer tam dersini yaptığımızda yine false değeri veriyordu. İşte bu metot Karakter dizinin hem alfabetik hem de alfa numerik olup olmadığını kontrol ediyor.
metin ="1234b" print(metin.isalnum()) True
Eğer şu şekilde yaparsak;
metin ="1234b*" print(metin.isalnum()) False
Gördüğünüz gibi alfabetik ve numerik dışında karakter girince False değeri verir.
Find Metodu:
Bu metot karakterin karakter dizisi içinde kaçıncı indekste olduğunu bulan metottur. Eğer aranılan karakter, Karakter dizisi içinde yoksa geriye -1 değeri döndürür.
metin ="Python Dersleri" print(metin.find("e")) 8
Burada dikkat etmeniz gereken şey bu metot soldan sağa doğru okur bu yüzden ilk gördüğü karakteri aldı.
Eğer biz istediğimiz aralıkta arama yapmasını belirtirsek o zamano aralıkta karakteri arar.
metin ="Python Dersleri" print(metin.find("e",9,13)) 12
Rfind Metodu:
Bu metot find metodu ile aynı işlevi yapar ama find metodunun tersine sağdan sola doğru okur.
metin ="Python Dersleri" print(metin.rfind("e")) 12
Index Metodu:
Bu metot find metodu ile aynı işlevi yapar aralarında ki tek fark index metodu aranılan karakter yoksa hata mesajı verir.
metin ="Python Dersleri" print(metin.index("e")) 8
Rindex Metodu:
Bu metot ise index metodunun tersine sağdan sola doğru okur.
metin ="Python Dersleri" print(metin.rindex("e")) 12
Join Metodu:
Bu metot birleştirme işlevini yapıyor.
metin ="Python" print(“*”.join(metin)) P*y*t*h*o*n
Veya şu şekilde yapabiliriz.
metin ="Python" nokta="." print(nokta.join(metin)) P.y.t.h.o.n
Yada elimizde şu şekilde bir liste olduğunu düşünelim
diller=["Python","Java","Ruby","C#"] print(diller) ['Python', 'Java', 'Ruby', 'C#']
Ben liste şeklinde değil de aralarında virgüller şeklinde göstermek istiyorum
diller=["Python","Java","Ruby","C#"] print(",".join(diller)) Python,Java,Ruby,C#
Split Metodu:
Bu metot join metodunun tersine karakter dizileri parçalar.
diller="Python,Java,Ruby,C#" print(diller.split(",")) ['Python', 'Java', 'Ruby', 'C#']
Translate ve Maketrans Metodu:
Bu iki metot birbiriyle bağlantılı metotlardır. Bunun için bir örnekle anlatayım.
Onun için sezar şifreleme kullandım. Elimizde şu şekilde bir metin var;
Aüknoçtoç dçüç fknçeçn ızezp brnuç ğiğt; Aünç sboğbuğ pğ glbğ jçbtğv ğglbrtuyp, ğvöğ.Eb, eğppğvlp eğjğppğölp ğolpgğ rogyıy nlül,Blcğ eğppğvl sboğ eğjğppğö ğglbrtuyp, ğvöğ.Şğnğtolilplp lflpgğ cğjlt cçtçt ağtöğc dlcğ,O cğjltl r üğnğtoğ uğp dlt ğglbrtuyp, ğvöğ.
Anahtar:3
kaynak="abcçdefgğhıijklmnoöprsştuüvyz" hedef ="çdefgğhıijklmnoöprsştuüvyzabc" tablom=str.maketrans(kaynak,hedef) print(metin.translate(tablom))
şeklinde şifreledim eğer hedef ile kaynak değiştirirsem eski haline getirmiş olacağım o zaman yapalım:
metin=” Aüknoçtoç dçüç fknçeçn ızezp brnuç ğiğt; Aünç sboğbuğ pğ glbğ jçbtğv ğglbrtuyp, ğvöğ.Eb, eğppğvlp eğjğppğölp ğolpgğ rogyıy nlül,Blcğ eğppğvl sboğ eğjğppğö ğglbrtuyp, ğvöğ.Şğnğtolilplp lflpgğ cğjlt cçtçt tablom=str.maketrans(hedef,kaynak) print(metin.translate(tablom))
Aşıklarla başa çıkacak gücün yoksa eğer;
Aşka öyleyse ne diye hayret ediyorsun, etme.Ey, cennetin cehennemin elinde olduğu kişi,
Bize cenneti öyle cehennem ediyorsun, etme.Şekerliğinin içinde zehir zarar vermez bize,
O zehiri o şekerle sen bir ediyorsun, etme.
Bu şekilde gerçek metni elde ettik. Bir dersin daha sonuna geldik eğer siz iyice oturmak istiyorsanız bolca uygulama yapın bunun için buradan faydalanabilirsiniz.
Mobilhanem.com da Karakter Dizileri ve Metotları dersinin sonuna geldik bir sonraki yazımızda görüşmek üzere. Eksik yada yanlış gördüğünüz yada anlamadığınız yerler için çekinmeden ulaşabilirsiniz.
Bütün Python derslerine buradan ulaşabilirsiniz.
89
Emeğinize sağlık, çok teşekkür ederim.
Rica ederiz kolay gelsin 🙂
Ben bir bilgi yarışması yapıyorum.yarışmada çekilme var fakat çekilince diğer soruya yinede geçiyor.çekildikten sonra yarışmanın bitmesini istiyorum bunu nasıl yapabilirim.
merhaba
rfind metodunda neden 12??
soldan sağa 12 olmuyor mu
okuduğu harf sayısına göre değil. sağdan sola okuyor ve ilk gördüğü ‘e’ harfi metinin 12. sırasında olduğu için 12 diyor. Sadece bakma sırası sağdan sola, harfin yerine göre sayıyı veriyor
Lower metoduna upper yazmışsınız 🙂
merhaba, dir()’i nasil kullandiniz?
ben
import string
print(dir(string))
dedigimde daha farkli bir liste aldim.
cmd’ye py yaz oraya dir(str) yaz
“dir(str)” şelklinde.
eğer “import string” şeklinde import komutu ile string dosyasını aktif etmiş oluyoruz. “string” dosyası “str” ile karıştırılmamalı bence.
Bende bu soruyla farkettim.