Python’da “String” Kullanımı
Bu dersimizde, programlamanın temel veri tiplerinden biri olan ve metinsel verileri ifade etmek için kullanılan “string” veri tipini ve Python ile kullanımını detaylı bir şekilde inceleyeceğiz.
Programlamada “String” Ne Anlama Gelir?
Bir sözlük açıp “string” kelimesinin anlamına baktığınızda “dizi, sıra, boncuk dizme” gibi anlamlara geldiğini görebilirsiniz. Peki, metinsel ifadeleri ifade etmek için “text” yerine neden “string” terimi tercih ediliyor?
Bunun sebebi, “string” kelimesinin yapısal bir anlam taşımasıdır. Programlamada “string” dediğimiz şey bir karakter dizisini ifade eder. Tıpkı bir boncuk dizisinin sıralı bir şekilde birbirine bağlanması gibi, “string” de ardışık karakterlerden oluşur. İşte bu dizilim özelliği, “string” kelimesinin seçilmesini daha mantıklı hale getirir. Zira bir metin aslında; harfler, rakamlar ve semboller gibi karakterlerin bir araya gelmesiyle oluşan bir yapı taşları dizisidir.
Öte yandan, “text” kelimesi daha genel bir anlam taşır ve yazının tamamını ifade eder. Ancak “string” terimi, metni oluşturan temel unsurları, yani karakterlerin sırasını vurgular. Bu yüzden, programlama dünyasında “string” kelimesi, metinsel veri tiplerini temsil etmek için oldukça uygun bir terim olarak kabul görmüştür.
Özetle, programlamadaki işlevi açısından baktığımızda, “karakterlerin sıralı dizilimini” ifade ettiği için “string” olarak adlandırılmıştır. Dolayısıyla biz bu ifadeyi “karakter dizisi” olarak Türkçeleştirebiliriz. Yani dizilere has bir özellik gösterirler. Bu da demektir ki; indeks numaralarını kullanarak metinsel ifadelerdeki belirli bir karaktere, [indeks numarası] şeklinde erişebiliriz. Bakınız:
string = "Merhaba, Dünya"
print(string[1])
# çıktı: e
❗ İndex değeri tıpkı diziler gibi 0’dan başlar.
Python’da “String” Bildirimi
Python’da “string”ler; tek tırnak (' '
), çift tırnak (" "
) veya üçlü tırnak (''' '''
ya da """ """
) içerisine alınarak tanımlanabilmektedir. Tek ve çift tırnaklar, tırnak işareti içeren metinleri kolayca yazabilmemizi sağlarken, üçlü tırnaklar ise çok satırlı metinler yazabilmemiz için kullanılır.
# Tek tırnak kullanımı
mesaj1 = 'Bu bir Python örneğidir.'
# Çift tırnak kullanımı
mesaj2 = "Python programlama dilini öğreniyoruz."
# Üçlü tırnak kullanımı
mesaj3 = """Bu, çok satırlı bir metin.
Bu metin, birden fazla satırda yazılmıştır.
Python dilinde üçlü tırnaklar bu tür metinler için kullanılır."""
# Çıktılar
print(mesaj1)
print(mesaj2)
print(mesaj3)
Tek tırnak (' '
) veya çift tırnak (" "
) kullanımı arasındaki tercih, çoğunlukla programcının stil zevkine bağlıdır. Yani, hangisinin kullanılacağı konusunda dilin zorunlu kıldığı bir kural yoktur; ikisi de aynı işlevi görür ve aynı “string”i temsil eder. Her ne kadar stil tercihi söz konusu olsa da, metinsel ifadenin barındırdığı tırnak işaretine göre “string” bildiriminde kullanacağınız tırnağı programın çalışması için doğru bir formatta seçmeniz gerekir.
# Tek tırnak kullanımı
mesaj1 = 'Python dilinde "string" işlemleri basittir.'
# Çift tırnak kullanımı
mesaj2 = "Python'un kullanımı oldukça yaygındır."
# Üçlü tırnak kullanımı
mesaj3 = """Python dilinde hem 'tek tırnaklar' hem de "çift tırnaklar"
kullanılabilir ve bu tür metinler
birden fazla satırda yazılabilir."""
# Çıktılar
print(mesaj1)
print(mesaj2)
print(mesaj3)
Yukarıdaki örnekte, metinsel ifadelerimiz içinde kullanılan tırnak işaretine göre uygun tırnak seçimi yapılmıştır. Maddeler halinde açıklayayım:
- Tek Tırnak Kullanımı:
mesaj1 = 'Python dilinde "string" işlemleri basittir.'
Bu string, içinde çift tırnak içerdiği için tek tırnak ile tanımlanmıştır. Böylece, çakışmanın önüne geçilmiştir. - Çift Tırnak Kullanımı:
mesaj2 = "Python'un kullanımı oldukça yaygındır."
Burada string’in içinde tek tırnak ('
) bulunduğundan, çift tırnakla tanımlanmıştır. Böylece, çakışmanın önüne geçilmiştir. - Üçlü Tırnak Kullanımı:
mesaj3 = """Python dilinde hem 'tek tırnaklar' hem de "çift tırnaklar" kullanılabilir..."""
Üçlü tırnak, hem tek tırnak hem de çift tırnak işaretlerini aynı anda kullanmamızı sağladığı gibi çok satırlı metinler oluşturmamızı da sağlamıştır.
❗ Python’da “string”ler “değiştirilemez” (immutable) veri türlerindendir. Haliyle, oluşturduğunuz “string”in içeriğini doğrudan değiştiremezsiniz. Dolayısıyla, oluşturduğunuz “string” üzerinde değişiklik yapmak istediğinizde yeni bir “string” oluşturmanız gerekir.
metin1 = "Merhaba"
metin1[0] = "m" # Bu hata verecektir, çünkü string'ler değiştirilemez.
metin2 = "Merhaba"
yeni_metin = "m" + metin2[1:] # İlk harfi değiştirerek yeni bir string oluşturuyoruz
print(yeni_metin)
# Çıktı: merhaba
Python’da “String”le Yapabileceğiniz İşlemler
1. Birleştirme (Concatenation): İki “string”i birleştirmek için +
operatörünü kullanabilirsiniz. Örneğin:
isim = "John"
soyisim = "Doe"
tam_isim = isim + " " + soyisim
print(tam_isim) # Çıktı: John Doe
2. Çoğaltma (Repetition): Bir “string”i belirli bir sayıda çoğaltmak için *
operatörünü kullanabilirsiniz. Örneğin:
mesaj = "Hoş Geldiniz! "
print(mesaj * 3) # Çıktı: Hoş Geldiniz! Hoş Geldiniz! Hoş Geldiniz!
3. İndeksleme: Bir “string”in içerisindeki karakterlere indeks numaralarını kullanarak ulaşabilirsiniz.
mesaj = "Merhaba"
print(mesaj[0]) # Çıktı: M
print(mesaj[1]) # Çıktı: e
❗ Negatif indeksleme de kullanılabilir. Bu durumda “string”in sonundan başlanarak karakterlere ulaşılır. Örneğin:
mesaj = "Merhaba"
print(mesaj[-1]) # Çıktı: a (son karakter)
4. % Operatörü: Python’da %
operatörü, tıpkı C dilindeki printf
fonksiyonundaki gibi bir biçimlendirme yöntemi sağlar. Bu operatör, “string” içindeki özel yer tutucular (%s
, %d
, %f
gibi) ile birlikte kullanılarak değişkenlerin yerleştirir. Örneğin:
isim = "John"
yas = 25
mesaj = "Benim adım %s ve %d yaşındayım." % (isim, yas)
print(mesaj)
# Çıktı: Benim adım John ve 25 yaşındayım.
- %s: String (metin) ifade için kullanılır.
- %d: Tam sayı (integer) için kullanılır.
- %f: Ondalık sayı (float) için kullanılır.
5. str.format() Metodu: Python’ın str.format()
metodu, “string” içinde süslü parantezler {}
kullanılarak yer tutucular tanımlanır ve .format()
metodu ile bu yerlere değerler yerleştirilir.
isim = "John"
yas = 25
mesaj = "Benim adım {} ve {} yaşındayım.".format(isim, yas)
print(mesaj)
# Çıktı: Benim adım John ve 25 yaşındayım.
❗ Yer tutuculara indeks numaraları vererek hangi değerin hangi konuma yerleştirileceğini belirleyebilirsiniz.
isim = "John"
yas = 25
mesaj = "Benim adım {0} ve {1} yaşındayım. Tekrar ediyorum, adım {0}.".format(isim, yas)
print(mesaj)
# Çıktı: Benim adım John ve 25 yaşındayım. Tekrar ediyorum, adım John.
❗ Yer tutuculara isimler verebilir ve .format()
içine bu isimleri parametre olarak geçebilirsiniz. Bu sayede, uzun ve karmaşık formatlamalarda daha okunabilir bir kod yazabileceksiniz.
isim = "John"
yas = 25
mesaj = "Benim adım {ad} ve {yas} yaşındayım.".format(ad="John", yas=25)
print(mesaj)
# Çıktı: Benim adım John ve 25 yaşındayım.
6. f-string: Python 3.6 ve sonrasında tanıtılan “f-string” (formatlı string) yöntemi ile süslü parantezler {}
içerisine doğrudan değişkenler veya ifadeler yerleştirerek metinleri hızlıca biçimlendirebilirsiniz.
isim = "John"
yas = 25
mesaj = f"Benim adım {isim} ve {yas} yaşındayım."
print(mesaj)
# Çıktı: Benim adım John ve 25 yaşındayım.
Python “String” Metotları
“Stringler” üzerinde çeşitli manipülasyonlar yapabilmek için Python bir dizi yerleşik metot barındırır. Aşağıdaki taboda yaygnı bir şekilde kullanılan “string” metotları listelenmiştir:
Metot | Görevi |
---|---|
upper() | Bir “string”in tüm karakterlerini büyük harfe çevirir. |
metin = "merhaba dünya" | |
lower() | Bir “string”in tüm karakterlerini küçük harfe çevirir. |
metin = "Merhaba Dünya" | |
capitalize() | Bir “string”in ilk harfini büyük yapar. |
metin = "merhaba dünya" | |
title() | Bir “string”deki her bir kelimenin ilk harfini büyük yapar. |
metin = "merhaba dünya" | |
strip() | Bir “string”in başında ve sonunda bulunan boşlukları kaldırır. |
metin = " merhaba dünya " | |
replace() | Bir “string” içindeki belirli bir “string”i başka bir “string” ile değiştirir. |
metin = "merhaba dünya" | |
find() | Bir “string” içinde belirli bir “string”in ilk kez bulunduğu indeksi döndürür. Eğer aranan “string” bulunamazsa, -1 döndürür. |
metin = "merhaba dünya" | |
count() | Bir “string” içinde belirli bir “string”in kaç kez geçtiğini döndürür. |
metin = "merhaba dünya" | |
startswith() | Bir “string”in belirli bir “string” ile başlayıp başlamadığını kontrol eder. |
metin = "merhaba dünya" | |
endswith() | Bir “string”in belirli bir “string” ile bitip bitmediğini kontrol eder. |
metin = "merhaba dünya" | |
split() | Belirtilen ayırıcıya göre bir “string”i böler ve parçaları bir liste olarak döndürür. Varsayılan ayırıcı virgüldür. |
metin = "merhaba dünya" |