Site Loader

Merhaba Arkadaşlar,
Pythhonearth.com da Python Eğitim serisinin bu dersinde Python da Karakter Dizileri ve Metotlarının ne olduğunu ve bunlarla  ilgili uygulamalar yapacağız.

Tüm derslere Buradan ulaşabilirsiniz.

Karakter Dizilerinin Metotları

Python’da nesnelerin niteliklerini değiştirmemizi, sorgulamamızı veya bu nesnelere yeni özellikler katmamızı sağlayan araçlardır. Metotlar sayesinde karakter dizilerini istediğimiz gibi eğip bükebileceğiz.
Öncelikle karakter dizilerini bu şekilde sıralayabileceğimizi daha önceki derslerimizde görmüştük.

dir("")

Bu komutu verdiğinizde aldığınız çıktıdan da gördüğünüz gibi, karakter dizilerinin 40’ın üzerinde metodu var. Dolayısıyla metot sayısının çokluğu gözünüzü korkutmuş olabilir. Ama aslında buna hiç lüzum yok. Çünkü programcılık maceranızda bu metotların bazılarını ya çok nadiren kullanacaksınız, ya da hiç kullanmayacaksınız. Çok kullanılan metotlar belli başlıdır. Elbette bütün metotlar hakkında fikir sahibi olmak gerekir. Zaten siz de göreceksiniz ki, bu metotlar kullandıkça aklınızda kalacak. Doğal olarak çok kullandığınız metotları daha kolay öğreneceksiniz. Eğer bir program yazarken hangi metodu kullanmanız gerektiğini veya kullanacağınız metodun ismini hatırlayamazsanız etkileşimli kabukta dir(“”) gibi bir komut verip çıkan sonucu incelemek pek zor olmasa gerek. Ayrıca hatırlayamadığınız bir metot olması durumunda dönüp bu sayfaları tekrar gözden geçirme imkanına da sahipsiniz. Unutmayın, bütün metotları ve bu metotların nasıl kullanıldığını ezbere bilmeniz zaten beklenmiyor. Metotları hatırlayamamanız gayet normal. Böyle bir durumda referans kitaplarına bakmak en doğal hakkınız.

replace()

Karakter dizisi metotları arasında inceleyeceğimiz ilk metot replace() metodu olacak. replace kelimesi Türkçede ‘değiştirmek, yerine koymak’ gibi anlamlar taşır. İşte bu metodun yerine getirdiği görev de tam olarak budur. Yani bu metodu kullanarak bir karakter dizisi içindeki karakterleri başka karakterlerle değiştirebileceğiz.

Hemen bir örnek yapalım

Karakter="pythonearth"
print(Karakter.replace("p","P"))

Burada “pythonearth” değerini taşıyan Karakter adlı bir karakter dizisi tanımladık. Bu karakter dizisinin içinde geçen “p” harfini “P” ile değiştirdik.

Gördüğünüz gibi, replace() son derece yararlı ve kullanımı oldukça kolay bir metot. Bu arada bu ilk metodumuz sayesinde Python’daki metotların nasıl kullanılacağı konusunda da bilgi edinmiş olduk. Yukarıdaki örneklerin bize gösterdiği gibi şöyle bir formülle karşı karşıyayız:

karakter_dizisi.metot(parametre)

Metotlar karakter dizilerinden nokta ile ayrılır. Python’da bu yönteme ‘noktalı gösterim’ (dot notation) adı verilir.

Bu arada metotların görünüş ve kullanım olarak fonksiyonlara ne kadar benzediğine dikkat edin. Tıpkı fonksiyonlarda olduğu gibi, metotlar da birtakım parametreler alabiliyor.

Yukarıdaki örnekte, replace() metodunun iki farklı parametre aldığını görüyoruz. Bu metoda verdiğimiz ilk parametre değiştirmek istediğimiz karakter dizisini gösteriyor. İkinci parametre ise birinci parametrede belirlediğimiz karakter dizisinin yerine ne koyacağımızı belirtiyor. Yani replace() metodu şöyle bir formüle sahiptir:

karakter_dizisi.replace(eski_karakter_dizisi, yeni_karakter_dizisi)

split(), rsplit(), splitlines()

Şimdi size şöyle bir soru sorduğumu düşünün: Acaba aşağıdaki karakter dizisinde yer alan bütün kelimelerin ilk harfini nasıl alırız?

Karakter="Dünya Sağlık Örgütü"

Yani burada “DSÖ” gibi bir çıktıyı nasıl elde ederiz?
Sadece bu karakter dizisi söz konusu ise, elbette karakter dizilerinin dilimlenme özelliğinden yararlanarak, Karakter değişkeni içindeki “D”“S”, ve “Ö” harflerini tek tek alabiliriz:

print(Karakter[0],Karakter[6],Karakter[13])

Tabi ki her zaman bu kadar şanslı olmayabiliriz. Eğer karakter dizisi değişirse bu yöntem de çöpe gider.

Python’da bu sorunu çözmemizi sağlayacak çok güzel bir metot bulunur. Bu metodun adı split().
Bu metodun görevi karakter dizilerini belli noktalardan bölmektir. Zaten split kelimesi Türkçede ‘bölmek, ayırmak’ gibi anlamlara gelir. İşte bu metot, üzerine uygulandığı karakter dizilerini parçalarına ayırır.
Örneğin:

Karakter="Dünya Sağlık Örgütü"

print(Karakter.split())

Gördüğünüz gibi bu metot sayesinde “Dünya Sağlık Örgütü” adlı karakter dizisini kelimelere bölmeyi başardık. Eğer bu çıktı üzerine bir for döngüsü uygularsak şöyle bir sonuç elde ederiz:

for i in Karakter.split():
    print(i)

Çıktı:

Dünya
Sağlık
Örgütü

Böylece split() metodunu öğrenmiş olduk. Gelelim rsplit() metoduna…

rsplit() metodu her yönüyle split() metoduna benzer. split() ile rsplit() arasındaki tek fark, split() metodunun karakter dizisini soldan sağa, rsplit() metodunun ise sağdan sola doğru okumasıdır. Şu örnekleri dikkatlice inceleyerek bu iki metot arasındaki farkı bariz bir şekilde görebilirsiniz:

Karakter="Dünya Sağlık Örgütü"

print(Karakter.rsplit(" ",1))

Çıktı:

['Dünya Sağlık', 'Örgütü']

Gördüğünüz gibi, split() metodu karakter dizisini soldan sağa doğru okuyordu.  rsplit() metodu ise karakter dizisini sağdan sola soğru okuduğu için bölme işlemini “Örgütü” adlı karakter dizisine uyguladı.
rsplit() metodunun pek yaygın kullanılan bir metot olmadığını belirterek splitlines() metoduna geçelim.

Bildiğiniz gibi, split() metodunu bir karakter dizisini kelime kelime ayırabilmek için kullanabiliyoruz. splitlines() metodunu ise bir karakter dizisini satır satır ayırmak için kullanabiliriz. Mesela elinizde uzun bir metin olduğunu ve amacınızın bu metin içindeki herbir satırı ayrı ayrı almak olduğunu düşünün. İşte splitlines() metoduyla bu amacınızı gerçekleştirebilirsiniz. Hemen bir örnek verelim:

metin = """Python programlama dili Guido Van Rossum adlı Hollandalı bir programcı
tarafından 90'lı yılların başında geliştirilmeye başlanmıştır. Çoğu insan, isminin
Python olmasına bakarak, bu programlama dilinin, adını piton yılanından aldığını
düşünür. Ancak zannedildiğinin aksine bu programlama dilinin adı piton yılanından
gelmez. Guido Van Rossum bu programlama dilini, The Monty Python adlı bir İngiliz
komedi grubunun, Monty Python's Flying Circus adlı gösterisinden esinlenerek
adlandırmıştır. Ancak her ne kadar gerçek böyle olsa da, Python programlama
dilinin pek çok yerde bir yılan figürü ile temsil edilmesi neredeyse bir gelenek
halini almıştır diyebiliriz."""

print(metin.splitlines())

Çıktı:

['Python programlama dili Guido Van Rossum adlı Hollandalı bir programcı ',
"tarafından 90'lı yılların başında geliştirilmeye başlanmıştır. Çoğu insan,
isminin", 'Python olmasına bakarak, bu programlama dilinin, adını piton
yılanından aldığını ', 'düşünür. Ancak zannedildiğinin aksine bu programlama
dilinin adı piton yılanından ', 'gelmez. Guido Van Rossum bu programlama
dilini, The Monty Python adlı bir İngiliz ', "komedi grubunun, Monty Python's
Flying Circus adlı gösterisinden esinlenerek ", 'adlandırmıştır. Ancak her ne
kadar gerçek böyle olsa da, Python programlama ', 'dilinin pek çok yerde bir
yılan figürü ile temsil edilmesi neredeyse bir gelenek ', 'halini almıştır
diyebiliriz.']

Gördüğünüz gibi, metnimiz Enter tuşuna bastığımız noktalardan bölündü.Bu çıktı sizin için şuanda hiç anlamlı durmuyor olabilir ama Listeler adlı konu ile bağdaştırdığınızda aslında çok anlamlı olduğunu göreceksiniz. Listeler buradan ulaşabilirsiniz.

splitlines() metodu yukarıdaki gibi parametresiz olarak kullanılabileceği gibi, bir adet parametre ile de kullanılabilir.
Bunu bir örnek üzerinde gösterelim:

metin = """Python programlama dili Guido Van Rossum adlı Hollandalı bir programcı
tarafından 90'lı yılların başında geliştirilmeye başlanmıştır. Çoğu insan, isminin
Python olmasına bakarak, bu programlama dilinin, adını piton yılanından aldığını
düşünür. Ancak zannedildiğinin aksine bu programlama dilinin adı piton yılanından
gelmez. Guido Van Rossum bu programlama dilini, The Monty Python adlı bir İngiliz
komedi grubunun, Monty Python's Flying Circus adlı gösterisinden esinlenerek
adlandırmıştır. Ancak her ne kadar gerçek böyle olsa da, Python programlama
dilinin pek çok yerde bir yılan figürü ile temsil edilmesi neredeyse bir gelenek
halini almıştır diyebiliriz."""

print(metin.splitlines(True))

Çıktı:

['Python programlama dili Guido Van Rossum adlı Hollandalı bir programcı \n',
"tarafından 90'lı yılların başında geliştirilmeye başlanmıştır. Çoğu insan,
isminin \n", 'Python olmasına bakarak, bu programlama dilinin, adını piton
yılanından aldığını \n', 'düşünür. Ancak zannedildiğinin aksine bu programlama
dilinin adı piton yılanından \n', 'gelmez. Guido Van Rossum bu programlama
dilini, The Monty Python adlı bir İngiliz \n', "komedi grubunun, Monty
Python's Flying Circus adlı gösterisinden esinlenerek \n", 'adlandırmıştır.
Ancak her ne kadar gerçek böyle olsa da, Python programlama \n', 'dilinin pek
çok yerde bir yılan figürü ile temsil edilmesi neredeyse bir gelenek \n',
'halini almıştır diyebiliriz.']

Gördüğünüz gibi, parametresiz kullanımda, program çıktısında satır başı karakterleri (\n) görünmüyor. Ama eğer splitlines() metoduna parametre olarak True verirsek program çıktısında satır başı karakterleri de görünüyor. Yazdığınız programlarda ihtiyacınıza göre splitlines() metodunu parametreli olarak veya parametresiz bir şekilde kullanabilirsiniz.

lower()

Mutlaka karşılaşmışsınızdır. Bazı programlarda kullanıcıdan istenen veriler büyük-küçük harfe duyarlıdır. Yani mesela kullanıcıdan bir parola isteniyorsa, kullanıcının bu parolayı büyük-küçük harfe dikkat ederek yazması gerekir. Bu programlar açısından, örneğin ‘sifre’ ve ‘Sifre’ aynı kelimeler değildir. Mesela kullanıcının parolası ‘sifre’ ise, bu kullanıcı programa ‘Sifre’ yazarak giremez.

Bazı başka programlarda ise bu durumun tam tersi söz konusudur. Yani büyük-küçük harfe duyarlı programların aksine bazı programlar da kullanıcıdan gelen verinin büyük harfli mi yoksa küçük harfli mi olduğunu önemsemez. Kullanıcı doğru kelimeyi büyük harfle de yazsa, küçük harfle de yazsa program istenen işlemi gerçekleştirir.

isim = input("Aradığınız kişinin adını ve soyadını giriniz: ")

if isim == "Cahit İşleyen":
    print("email: [email protected]")
    print("tel  : 02121231212")
    print("şehir: İstanbul")

elif isim == "Sadık Ortaoglan":
    print("email: [email protected]")
    print("tel  : 03121231212")
    print("şehir: Iğdır")

elif isim == "Elif Edalı":
    print("email: [email protected]")
    print("tel  : 02161231212")
    print("şehir: Ağrı")

else:
    print("Aradığınız kişi sistemde bulunamadı!")

Bu programın doğru çalışabilmesi için kullanıcının, örneğin, Cahit İşleyen adlı kişiyi ararken büyük-küçük harfe dikkat etmesi gerekir. Eğer kullanıcı Cahit İşleyen yazarsa o kişiyle ilgili bilgileri alabilir, ama eğer mesela Cahit işleyen yazarsa bilgileri alamaz.

Bu işi yapmanın iki yolu var: Birincisi if bloklarını her türlü ihtimali düşünerek yazabiliriz.

if kişi == "Cahit işleyen" or "Cahit İşleyen" or "cahit işleyen":

Ama burada bazı problemler var. Birincisi, kullanıcının kaç türlü veri girebileceğini kestiremeyebilirsiniz. İkincisi, kestirebilseniz bile, her kişi için olasılıkları girmeye çalışmak eziyetten başka bir şey değildir.

Evet işte burada devreye lower() metodu girecek. Dikkatlice bakalım o zaman

isim = input("Aradığınız kişinin adını ve soyadını giriniz: ")
isim=isim.lower()
if isim == "Cahit İşleyen":
    print("email: [email protected]")
    print("şehir: İstanbul")

elif isim == "Sadık Ortaoglan":
    print("email: [email protected]")
    print("şehir: Iğdır")

elif isim == "Elif Edalı":
    print("email: [email protected]")
    print("şehir: Ağrı")

else:
    print("Aradığınız kişi sistemde bulunamadı")

Artık kullanıcı ‘Cahit işleyen’ de yazsa, ‘Cahit İşleyen’ de yazsa, hatta ‘CAHİT İŞLEYEN’ de yazsa programımız doğru çalışacaktır.

karakter="İZMİR"
print(karakter.lower())

Çıktı:

izmir

Buda küçük bir örnek olsun ve şimdi başka bir metot’a geçelim.

upper()

Bu metot biraz önce öğrendiğimiz lower() metodunun yaptığı işin tam tersini yapar.upper() metodu harfleri büyütmemizi sağlar.

karakter="elma"
print(karakter.upper())

Çıktı:

ELMA

Python programcıları genellikle kullanıcı verilerini standart bir hale getirmek için bütün harfleri küçültmeyi tercih eder, ama tabii ki sizin bunun tersini yapmak istemenizin önünde hiçbir engel yok

Diyelim ki, sorgulattığınız şehrin plakasını veren bir program yazmak istiyorsunuz. Bunun için şöyle bir kod yazarak işe başlayabilirsiniz:

şehir = input("Plakasını öğrenmek istediğiniz şehirin adını giriniz : ")

if şehir == "ADANA":
    print("01")

elif şehir == "Ağrı":
    print("04")

elif şehir == "Iğdır":
    print("76")

else:
    print("Girdiğiniz şehir veritabanında yok!")

Burada programımızın doğru çalışabilmesi, kullanıcının şehir adlarını büyük harfle girmesine bağlıdır. Örneğin programımız ‘ADANA’ cevabını kabul edecek, ama mesela ‘Adana’ cevabını kabul etmeyecektir. Bunu engellemek için lower() metodunu kullanabileceğimizi biliyoruz. Bu sorunu çözmek için aynı şekilde upper() metodunu da kullanabiliriz:

şehir = input("Plakasını öğrenmek istediğiniz şehirin adını giriniz : ")
şehir=şehir.upper()
if şehir == "ADANA":
    print("01")

elif şehir == "Ağrı":
    print("04")

elif şehir == "Iğdır":
    print("76")

else:
    print("Girdiğiniz şehir veritabanında yok!")

Burada yazdığımız şehir = şehir.upper() kodu sayesinde artık kullanıcı şehir adını büyük harfle de girse, küçük harfle de girse programımız düzgün çalışacaktır.

islower() , isupper()

Karakter dizileri üzerinde birtakım değişiklikler yapmamızı sağlayan bu tür metotlara ‘değiştirici metotlar’ adı verilir. Bu tür metotların dışında bir de ‘sorgulayıcı metotlar’dan söz edebiliriz. Sorgulayıcı metotlar, değiştirici metotların aksine, bir karakter dizisi üzerinde değişiklik yapmamızı sağlamaz. Bu tür metotların görevi karakter dizilerinin durumunu sorgulamaktır. Sorgulayıcı metotlara örnek olarak islower() ve isupper() metotlarını verebiliriz.

Bildiğiniz gibi, lower() metodu bir karakter dizisini tamamen küçük harflerden oluşacak şekle getiriyordu. islower() metodu ise bir karakter dizisinin tamamen küçük harflerden oluşup oluşmadığını sorguluyor.

karakter="elma"
print(karakter.islower())

Çıktı:

True

Gördüğünüz gibi bize True yada False döndürüyor.
Dikkat etmemiz gereken şeylerden biriside içinde bir tane büyük harf barından kelime kesinlikle False dödürecektir.
O zaman küçük bir örnek ile pekiştirelim.

karakter="Armut"
print(karakter.islower())

Çıktı:

False

Yazdığınız programlarda, örneğin, kullanıcıdan gelen verinin sadece küçük harflerden oluşmasını istiyorsanız bu metottan yararlanarak kullanıcıdan gelen verinin gerçekten tamamen küçük harflerden oluşup oluşmadığını denetleyebilirsiniz:

veri = input("Adınız: ")

if not veri.islower():
    print("Lütfen isminizi sadece küçük harflerle yazın")

isupper() metodu da islower() metodunun yaptığı işin tam tersini yapar. Bildiğiniz gibi, upper() metodu bir karakter dizisini tamamen büyük harflerden oluşacak şekle getiriyordu. isupper() metodu ise bir karakter dizisinin tamamen büyük harflerden oluşup oluşmadığını sorguluyor:

karakter="Python"
print(karakter.isupper())

Çıktı:

False

Gördüğünüz gibi bu metot ise bu şekilde islower() için ne dedikse tam tersini ise isupper() yapıyor.

islower() ve isupper() metotları programlamada sıklıkla kullanılan karakter dizisi metotlarından ikisidir. Dolayısıyla bu iki metodu iyi öğrenmek programlama maceranız sırasında işlerinizi epey kolaylaştıracaktır.

endswith()

Tıpkı isupper() ve islower() metotları gibi, endswith() metodu da sorgulayıcı metotlardan biridir. endswith() metodu karakter dizileri üzerinde herhangi bir değişiklik yapmamızı sağlamaz. Bu metodun görevi karakter dizisinin durumunu sorgulamaktır.

Bu metot yardımıyla bir karakter dizisinin hangi karakter dizisi ile bittiğini sorgulayabiliyoruz. Yani örneğin:

code="Pythonearth"
code.endswith("h")

Çıktı:

True

Gelin isterseniz elimizi alıştırmak için bu metotla birkaç örnek daha yapalım:

d1 = "python.ogg"
d2 = "tkinter.mp3"
d3 = "pygtk.ogg"
d4 = "movie.avi"
d5 = "sarki.mp3"
d6 = "filanca.ogg"
d7 = "falanca.mp3"
d8 = "dosya.avi"
d9 = "perl.ogg"
d10 = "c.avi"
d11 = "c++.mp3"

for i in d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11:
    if i.endswith(".mp3"):
        print(i)

Bu örnekte, elimizde farklı uzantılara sahip bazı dosyalar olduğunu varsaydık ve bu dosya adlarının herbirini ayrı birer değişken içinde depoladık. Gördüğünüz gibi, dosya uzantıları .ogg.mp3 veya .avi. Bizim burada amacımız elimizdeki mp3 dosyalarını listelemek. Bu işlem için endswith() metodundan yararlanabiliyoruz.

Burda yaptığımız for işlemini anlamayanlar gelecek hafta döngüleri anlatacağız orda daha iyi anlayacağınızdan eminim.

Yukarıdaki örnekte de gördüğünüz gibi, endswith() metodu özellikle dosya uzantılarına göre dosya türlerini tespit etmede oldukça işe yarar bir metottur.

startswith()

Bu metot, biraz önce gördüğümüz endswith() metodunun yaptığı işin tam tersini yapar. startswith() metodu ise bir karakter dizisinin hangi karakter veya karakterlerle başladığını denetler:

code="Pythonearth" 
code.starswith("P")

Çıktı:

True

Gördüğünüz gibi, eğer karakter dizisi gerçekten belirtilen karakterle başlıyorsa Python True çıktısı, yok eğer belirtilen karakterle başlamıyorsa False çıktısı veriyor.

Yukarıda verdiğimiz örneği birde burada uygulayalım o zaman gerçek hayatta nasıl kullanılabileceğini de görmüş oluruz.

d1 = "python.ogg"
d2 = "tkinter.mp3"
d3 = "pygtk.ogg"
d4 = "movie.avi"
d5 = "sarki.mp3"
d6 = "filanca.ogg"
d7 = "falanca.mp3"
d8 = "dosya.avi"
d9 = "perl.ogg"
d10 = "c.avi"
d11 = "c++.mp3"

for i in d1, d2, d3, d4, d5, d6, d7, d8, d9, d10, d11:
    if i.startswith("p"):
        print(i)

Burada ‘p’ harfiyle başlayan bütün dosyaları listeledik.

capitalize()

Şimdi göreceğimiz capitalize() metodu ise karakter dizileri üzerinde değişiklik yapmamızı sağlayacak. Dolayısıyla bu capitalize() metodu da ‘değiştirici metotlar’dan biridir diyebiliriz.

Şimdi göreceğimiz capitalize() metodu da upper() ve lower() metotlarına benzemekle birlikte onlardan biraz daha farklı davranır: capitalize() metodunun görevi karakter dizilerinin yalnızca ilk harfini büyütmektir. Örneğin:

code="pythonearth"
code.capitalize()

Çıktı:

'Python

Bu metodu kullanırken dikkat etmemiz gereken bir nokta var: Bu metot bir karakter dizisinin yalnızca ilk harfini büyütür. Yani birden fazla kelimeden oluşan karakter dizilerine bu metodu uyguladığımızda bütün kelimelerin ilk harfi büyümez. Yalnızca ilk kelimenin ilk harfi büyür.

code="pythonearth eğitim serisi" 
code.capitalize()

Çıktı:

Pythonearth eğitim serisi

“pythonearth eğitim serisi” üç kelimeden oluşan bir karakter dizisidir. Bu karakter dizisi üzerine capitalize() metodunu uyguladığımızda bu üç kelimenin tamamının ilk harfleri büyümüyor. Yalnızca ilk ‘pythonearth’ kelimesinin ilk harfi bu metottan etkileniyor.

title()

Bildiğiniz gibi capitalize() metodu bir karakter dizisinin yalnızca ilk harfini büyütüyordu. title() metodu da karakter dizilerinin ilk harfini büyütür. Ama capitalize() metodundan farklı olarak bu metot, birden fazla kelimeden oluşan karakter dizilerinin her kelimesinin ilk harflerini büyütür.

Bunu bir örnek üzerinde anlatsam sanırım daha iyi olacak ve kalıcı olması için yukarıda kullandığım örneği kullanacağım.

code="pythonearth eğitim serisi" 
code.title()

Çıktı:

Pythonearth Eğitim Serisi

Dediğimiz gibi, capitalize() metodu yalnızca ilk kelimenin ilk harfini büyütmekle yetinirken, title() metodu karakter dizisi içindeki bütün kelimelerin ilk harflerini büyütüyor.

swapcase()

swapcase() metodu da büyük-küçük harfle ilgili bir metottur. Bu metot bir karakter dizisi içindeki büyük harfleri küçük harfe; küçük harfleri de büyük harfe dönüştürür.
Örneğin:

code="pythonearth"
code.swapcase()

Çıktı:

PYTHONEARTH
code="Pythonearth"
code.swapcase()

Çıktı:

pYTHONEARTH

Burada mantığını anladığınızı düşünüyorum. Gördüğünüz gibi, bu metot aynen dediğimiz gibi işliyor. Yani küçük harfleri büyük harfe; büyük harfleri de küçük harfe dönüştürüyor.

strip(), lstrip(), rstrip()

Bu başlıkta birbiriyle bağlantılı üç adet karakter dizisi metodunu inceleyeceğiz.

Bu metotlarstrip()lstrip() ve rstrip(). İlk olarak strip() metoduyla başlayalım.

Zaman zaman, içinde anlamsız ya da gereksiz karakterler barındıran metinleri bu anlamsız ve gereksiz karakterlerden temizlemeniz gereken durumlarla karşılaşabilirsiniz. Örneğin arkadaşınızdan gelen bir e.postada her satırın başında ve/veya sonunda > gibi bir karakter olabilir. Arkadaşınızdan gelen bu e.postayı kullanabilmek için öncelikle metin içindeki o > karakterlerini silmeniz gerekebilir. Hepimizin bildiği gibi, bu tür karakterleri elle temizlemeye kalkışmak son derece sıkıcı ve zaman alıcı bir yöntemdir. Ama artık siz bir Python programcısı olduğunuza göre bu tür angaryaları Python’a devredebilirsiniz.

Yukarıda bahsettiğimiz duruma yönelik bir örnek vermeden önce dilerseniz strip() metoduyla ilgili çok basit örnekler vererek başlayalım işe:

code="Pythonearth"
code.strip("P")

Çıktı:

ythonearth

Gördüğünüz gibi strip() metodu kesme işlemi yapıyor.

code="   Pythonearth   " 
code.strip()

Çıktı:

'Pythonearth'

Gördüğünüz gibi, strip() metodunu kullanarak, karakter dizisinin orijinalinde bulunan sağlı sollu boşluk karakterlerini bir çırpıda ortadan kaldırdık.

strip() metodunun öntanımlı olarak kırptığı karakterler şunlardır:

‘ ‘ boşluk karakteri
\t sekme (TAB) oluşturan kaçış dizisi
\n satır başına geçiren kaçış dizisi
\r imleci aynı satırın başına döndüren kaçış dizisi
\v düşey sekme oluşturan kaçış dizisi
\f yeni bir sayfaya geçiren kaçış dizisi

Şöyle bir örnek daha göstereyim o zaman.

code="kazak"
code.strip("k")

Çıktı:

'aza'

Gördüğünüz gibi, strip() metoduna “k” parametresini vererek, “kazak” adlı karakter dizisinin hem başındaki hem de sonundaki “k” harflerini kırpmayı başardık. Eğer bu metoda verdiğiniz parametre karakter dizisinde geçmiyorsa, bu durumda strip() metodu herhangi bir işlem yapmaz. Ya da aradığınız karakter, karakter dizisinin yalnızca tek bir tarafında (mesela sadece başında veya sadece sonunda) geçiyorsa, strip() metodu, ilgili karakter hangi taraftaysa onu siler. Aranan karakterin bulunmadığı tarafla ilgilenmez.

lstrip() metodundan başlayalım anlatmaya…

code="kazak"
print(code.lstrip("k"))

Çıktı:

'azak'

Gördüğünüz gibi, lstrip() metodu yalnızca sol baştaki “k” harfiyle ilgilendi. Sağ taraftaki “k” harfine ise dokunmadı. Eğer sol taraftaki karakteri değil de yalnızca sağ taraftaki karakteri uçurmak istemeniz halinde ise rstrip() metodundan yararlanacaksınız:

code="kazak"
print(code.rstrip("k"))

Çıktı:

'kaza'

Bu arada, yukarıdaki metotları doğrudan karakter dizileri üzerine uygulayabildiğimize de dikkat edin.

count()

Tıpkı daha önce öğrendiğimiz sorgulayıcı metotlar gibi, count() metodu da bir karakter dizisi üzerinde herhangi bir değişiklik yapmamızı sağlamaz. Bu metodun görevi bir karakter dizisi içinde belli bir karakterin kaç kez geçtiğini sorgulamaktır. Bununla ilgili hemen bir örnek verelim:

code="adıyaman"
print(code.count("a"))

Buradan anlıyoruz ki, “adıyaman” adlı karakter dizisi içinde toplam 3 adet “a” karakteri geçiyor.

Peki bu metodu gerçek programlarda ne amaçla kullanabilirsiniz? Bu metodu kullanarak, örneğin, kullanıcıyı aynı karakterden yalnızca bir adet girmeye zorlayabilirsiniz. Bunun için mesela şöyle bir yapı kullanabilirsiniz:

parola = input("parolanız: ")

kontrol = True

for i in parola:
    if parola.count(i) > 1:
        kontrol = False

if kontrol:
    print('Parolanız onaylandı!')
else:
    print('Parolanızda aynı harfi bir kez kullanabilirsiniz!')

Burada kontrol değişkeninin değerini True olarak belirledik. Eğer parola içindeki harflerden herhangi biri 1’den fazla geçiyorsa bu durumda kontrol değişkeninin değerini False yapıyoruz:

for i in parola:
    if parola.count(i) > 1:
        kontrol = False

Daha sonra da kontrol değişkeninin durumuna göre kullanıcıya parolanın onaylandığı veya onaylanmadığı bilgisini veriyoruz. Buna göre eğer kontrol değişkeninin değeri True ise şu çıktıyı veriyoruz:

Parolanız onaylandı!

Aksi halde şu çıktıyı veriyoruz:

Parolanızda aynı harfi bir kez kullanabilirsiniz!

Evet arkadaşlar Python Karakter Dizileri(String) ve Metotlarını bu kadar anlatacağım çok fazla uzun  olması sizin için sıkıcı olacağını düşündüm uzun ve çok geniş bir konu , sizlerde araştırırsanız sizin için daha kalıcı olacaktır. Bu arada hali hazırda Cahit hocamızın Youtube üzerinde derslerin anlatımını yaptığı dersleri de takip edebilirsiniz sizin için de daha iyi olur.
Daha önce dediğim gibi karakter dizilerini tamamını anlatmadım işinize yarayacak kadarını anlattım ama daha fazlasına ihtiyaç duyarsanız aşağıda yorumlarda yada mail ile iletişem’e geçebilirsiniz kesinlikle çekinmenizi istemem ve umarım sizin için yararlı bir ders olmuştur .
pythonearth

Sağlıcakla 🙂

 

Post Author: Sadık Ortaoglan

computer enginering

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir