22karakter metot 3.fw min

Python Ders 22 | Karakter Dizilerinin Metotları – 3

Metotları incelemeye devam ediyoruz.

index(), rindex()

Karakterlerin, bir karakter dizisi içinde hangi sırada bulunduğunu öğrenmek için index() adlı bir metottan yararlanabiliriz. Örneğin:

>>> kardiz = "python"
>>> kardiz.index("p")

0

>>> kardiz.index("n")

5

Eğer sırasını sorguladığımız karakter, o karakter dizisi içinde bulunmuyorsa, bu durumda Python bize bir hata mesajı gösterir:

>>> kardiz.index("z")

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: substring not found

Bu metodun özelliği, sorguladığımız karakterin, karakter dizisi içinde geçtiği ilk konumu vermesidir. Yani örneğin:

>>> kardiz = "adana"
>>> kardiz.index("a")

0

adana” adlı karakter dizisi içinde 3 adet ‘a’ harfi var. Ancak Python bize ‘a’ harfinin geçtiği ilk konumu, yani 0. konumu, bildirecektir.

index() metodunu biz yukarıda tek bir parametre ile birlikte kullandık. Bu metot aslında toplam 3 parametre alır.

>>> kardiz.index("a", 1)

2

index() metodunun ikinci parametresi, Python’ın aramaya kaçıncı sıradan itibaren başlayacağını gösteriyor. Biz yukarıdaki örnekte Python’ın aramaya 1. sıradan itibaren başlamasını istedik.

Bu yüzden Python 0. sıradaki “a” karakterini es geçti ve 2. sırada bulunan “a” karakterini gördü.

Gelelim index() metodunun 3. parametresine… Dilerseniz 3. parametrenin ne işe yaradığını bir örnek üzerinde gösterelim:

>>> kardiz = "adana"
>>> kardiz.index("a", 1, 3)

2

3. parametre Python’ın sorgulama işlemini hangi sıra aralıklarından gerçekleştireceğini gösterir. Mesela yukarıdaki örnekte biz “adana” karakter dizisinin 1. ve 3. sıraları arasındaki ‘a’ harflerini sorguladık.

Peki biz mesela “adana” karakter dizisi içindeki bütün ‘a’ harflerinin sırasını öğrenmek istersek ne yapacağız?

kardiz = "adana"

for i in range(len(kardiz)):
    print(kardiz.index("a", i))

Gördüğünüz gibi index() metodu bir karakter dizisi içindeki karakterleri ararken karakter dizisini soldan sağa doğru okuyor. Python’da bu işlemin tersi de mümkündür.

Bu iş için rindex() adlı bir metottan yararlanacağız. Hemen bir örnekle durumu açıklamaya çalışalım:

>>> kardiz = "adana"
>>> kardiz.index("a")

0

>>> kardiz.rindex("a")

4

Bu iki örnek, index() ve rindex() metotları arasındaki farkı gayet net bir şekilde ortaya koyuyor. 

find, rfind()

find() ve rfind() metotları tamamen index() ve rindex() metotlarına benzer. find() ve rfind() metotlarının görevi de bir karakter dizisi içindeki bir karakterin konumunu sorgulamaktır:

>>> kardiz = "adana"
>>> kardiz.find("a")

0

>>> kardiz.rfind("a")

4

Peki index()/rindex() ve find()/rfind() metotları arasında ne fark var?

index() ve rindex() metotları karakter dizisi içindeki karakteri sorgularken, eğer o karakteri bulamazsa bir ValueError hatası verir:

>>> kardiz = "adana"
>>> kardiz.index("z")

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: substring not found

Ama find() ve rfind() metotları böyle bir durumda -1 çıktısı verir:

>>> kardiz = "adana"
>>> kardiz.find("z")

-1

Bu iki metot çifti arasındaki tek fark budur.

center()

Center kelimesi İngilizce’de ‘orta, merkez, ortalamak’ gibi anlamlara gelir. Bu anlama uygun olarak, center() metodunu karakter dizilerini ortalamak için kullanabilirsiniz. Örneğin:

for metot in dir(""):
    print(metot.center(15))

Gördüğünüz gibi center() metodu bir adet parametre alıyor. Bu parametre, karakter dizisine uygulanacak ortalama işleminin genişliğini gösteriyor.

>>> kardiz = "python"

>>> kardiz.center(10)

'  python  '

Çıktıdaki tırnak işaretlerine bakarak, ‘python’ kelimesinin ortalandığını görebilirsiniz.

Buradan şu sonucu çıkarıyoruz: center() metoduna verilen genişlik parametresi aslında bir karakter dizisinin toplam kaç karakterlik bir yer kaplayacağını gösteriyor.

Yani 10 olarak belirttiğimiz boşluk adedinin 6’sı ‘python’ kelimesinin kendisi tarafından işgal ediliyor. Geriye kalan 4 boşluk mesafe ise karakter dizisinin sol ve sağ tarafına paylaştırılıyor.

center() metodunun karakter dizileri üzerindeki etkisini daha net olarak görmek için şöyle bir döngü kurabilirsiniz:

>>> for i in range(1, 20):
...     kardiz.center(i)
...
'python'
'python'
'python'
'python'
'python'
'python'
' python'
' python '
'  python '
'  python  '
'   python  '
'   python   '
'    python   '
'    python    '
'     python    '
'     python     '
'      python     '
'      python      '
'       python      '


center() metodu aslında bir parametre daha alır. Şu örneği inceleyelim:

>>> kardiz = "elma"
>>> kardiz.center(10, "-")

'---elma---'

Gördüğünüz gibi, center() metoduna verdiğimiz “-“ değeri sayesinde “elma” karakteri ortalanırken, sağ ve sol taraftaki boşluklara da “-“ karakteri eklenmiş oldu.

rjust(), ljust()

rjust() metodu bir karakter dizisini sağa yaslarkenljust() metodu karakter dizisini sola yaslar. Mesela şu iki kod parçasının çıktılarını inceleyin:

>>> for i in dir(""):
...     print(i.ljust(20))

>>> for i in dir(""):
...     print(i.rjust(20))

Bu metot yardımıyla karakter dizilerimizi sola yaslayıp, sağ tarafına da istediğimiz karakterleri yerleştirebiliyoruz. Hemen bir örnek verelim:

>>> kardiz = "tel no"
>>> kardiz.ljust(10, ".")

'tel no....'

ljust() metoduyla ilgili basit bir örnek daha verelim:

>>> for i in "elma", "armut", "patlıcan":
...     i.ljust(10, ".")
...
'elma......'
'armut.....'
'patlıcan..'

Gördüğünüz gibi, bu metot karakter dizilerini şık bir biçimde sola hizalamamıza yardımcı oluyor.

rjust() metodu ise, ljust() metodunun yaptığı işin tam tersini yapar. Yani karakter dizilerini sola değil sağa yaslar:

>>> for i in "elma", "armut", "patlıcan":
...     i.rjust(10, ".")
...
'......elma'
'.....armut'
'..patlıcan'

ljust() ve rjust() metotları, kullanıcılarınıza göstereceğiniz çıktıların düzgün görünmesini sağlamak açısından oldukça faydalıdır.

zfill()

zfill() metodu yardımıyla karakter dizilerinin sol tarafına istediğimiz sayıda sıfır ekleyebiliriz:

>>> a = "12"
>>> a.zfill(3)

'012'

Bu metodu şöyle bir iş için kullanabilirsiniz:

>>> for i in range(11):
...     print(str(i).zfill(2))
00
01
02
03
04
05
06
07
08
09
10

Burada str() fonksiyonunu kullanarak, range() fonksiyonundan elde ettiğimiz sayıları birer karakter dizisine çevirdiğimize dikkat edin. Çünkü zfill() karakter dizilerinin bir metodudur. Sayıların değil…

partition(), rpartition()

Bu metot yardımıyla bir karakter dizisini belli bir ölçüte göre üçe bölüyoruz. Örneğin:

>>> a = "istanbul"
>>> a.partition("an")

('ist', 'an', 'bul')

Eğer partition() metoduna parantez içinde verdiğimiz ölçüt karakter dizisi içinde bulunmuyorsa şu sonuçla karşılaşırız:

>>> a = "istanbul"
>>> a.partition("h")

('istanbul', '', '')

Gelelim rpartition() metoduna… partition() metodu karakter dizilerini soldan sağa doğru okur. rpartition() metodu ise sağdan sola doğru.

>>> b = "istihza"
>>> b.partition("i")

('', 'i', 'stihza')

Gördüğünüz gibi, partition() metodu karakter dizisini ilk ‘i’ harfinden böldü. Şimdi aynı işlemi rpartition() metodu ile yapalım:

>>> b.rpartition("i")

('ist', 'i', 'hza')

rpartition() metodu ise, karakter dizisini sağdan sola doğru okuduğu için ilk ‘i’ harfinden değil, son ‘i’ harfinden böldü karakter dizisini.

encode()

Bu metot yardımıyla karakter dizilerimizi istediğimiz kodlama sistemine göre kodlayabiliriz. Python 3.x’te varsayılan karakter kodlaması utf-8’dir. Eğer istersek şu karakter dizisini utf-8 yerine cp1254 ile kodlayabiliriz:

>>> "çilek".encode("cp1254")

expandtabs()

Bu metot yardımıyla bir karakter dizisi içindeki sekme boşluklarını genişletebiliyoruz. Örneğin:

>>> a = "elma\tbir\tmeyvedir"
>>> a.expandtabs(10)

'elma   bir     meyvedir'

Böylece bir metot grubunu daha geride bırakmış olduk. Gördüğünüz gibi bazı metotlar sıklıkla kullanılabilme potansiyeli taşırken, bazı metotlar pek öyle sık kullanılacakmış gibi görünmüyor…

Sonraki bölümde metotları incelemeye devam edeceğiz.

Bu eğitim seti Kaynak tarafından oluşturulmuştur.

İletişim: admin@herseymi.com
Yazı oluşturuldu 110

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Benzer yazılar

Aramak istediğinizi üstte yazmaya başlayın ve aramak için enter tuşuna basın. İptal için ESC tuşuna basın.

Üste dön