python dersleri

Python Karakter Dizileri(String) ve Metotları

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.

84

Cahit İşleyen

Data Scientist at @Embedica.ai
Python ve Linux sever.
Çay tiryakisi

9 Yorum

  • 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.

    • 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

  • merhaba, dir()’i nasil kullandiniz?

    ben
    import string
    print(dir(string))

    dedigimde daha farkli bir liste aldim.

    • “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.

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?