# Python Karakter Dizileri

Python karakter dizileri (strings) konusunu işliyoruz.

Her programlama dilinde olduğu gibi Python programlama dilinde de karakter dizileri yani string değişken tipi büyük önem arz eder. Çünkü tanımlayacağınız birçok değişken string ifadeler içerir. Üstelik string değişken tipleri üzerinden yürütebileceğiniz birçok Python fonksiyonu mevcuttur. Bir string yani str veri tipinde değerler " (çift tırnak), ' (tek tırnak), """ (üç tırnak) ifadeleri arasında gösterilir.

blog = "Kerteriz Blog"
blog = 'Kerteriz Blog'
blog = """Kerteriz Blog"""

Bu örnekte gördüğünüz her üç değişken de birebir aynıdır. Siz istediğiniz kullanımı tercih edebilirsiniz. Fakat bir kullanım belirledikten sonra değerinizin içinde aynı işareti kullanamazsınız çünkü Python değerin bitiş yerini orası belirler.

#YANLIŞ
metin = 'Yunus'un arabası var'
#DOĞRU
metin = "Yunus'un arabası var"
#DOĞRU
metin = """Yunus'un arabası var"""

Bir string oluşturduğunuzda hangi işaret ile başlıyorsanız bitirirken de aynı işareti kullanmalısınız.

#DOĞRU
isim = 'Kerteriz'
#DOĞRU
isim = "Kerteriz"
#YANLIŞ
isim = "Kerteriz'
#YANLIŞ
isim = "Kerteriz"""

String (str) değişken tanımlarken birden fazla satırdan oluşan değerler oluşturabilirsiniz.

a = '''Merhaba arkadaşlar,
Bu örnekte gördüğünüz gibi,
birden fazla satıra sahip
değişken oluşturabilirsiniz.'''
print(a)

1. String Değerler Aynı Zamanda Dizidir

Bir string veri tipinde değişken oluşturmuşsanız aynı zamanda bir dizi oluşturmuşsunuz demektir. Çünkü ders başlığında da yazdığımız gibi bir string değişken karakter dizisi şeklinde veri tipidir. Örneğin " Kerteriz " kelimesi K , e , r , t , e , r , i , z harflerinden meydana gelir. Bunu hemen başka bir örnekle gösterelim:

sehir= "Ankara"
print(sehir[0]) #A
print(sehir[1]) #n
print(sehir[2]) #k
print(sehir[3]) #a
print(sehir[4]) #r
print(sehir[5]) #a

Dizilerde (ilerleyen derslerde göreceğiz) index her zaman 0 dan başlar. Yani 0.index ilk elemandır.

2. Metin Dilimleme (String Parçalama)

Programlamanızı yaparken elinizdeki string değişkenlerin belirli bir parçasını kullanmak, başından veya sonundan kırpmak, tersine çevirmek gibi işlemlere tabi tutmak isteyebilirsiniz. İlk olarak elinizdeki metinin bir karakter dizisi olduğunu hatırlayalım.

isim = "Kerteriz"
isim[0] --> K
isim[1] --> e
isim[2] --> r
isim[3] --> t
isim[4] --> e
isim[5] --> r
isim[6] --> i
isim[7] --> z
#Tersinede işlem yapabiliriz
isim[-1] --> z
isim[-2] --> i
isim[-3] --> r
isim[-4] --> e
isim[-5] --> t
isim[-6] --> r
isim[-7] --> e
isim[-8] --> K

Öyleyse elimizdeki metin üzerinde x. karakterden y. karaktere kadar kırpma işlemini gerçekleştirelim.

isim = "kerteriz ile Python öğreniyorum"
# 4. indeksten 10.indekse kadar
isim[4:10] --> eriz i
# En baştan 10.indekse kadar
isim[:10] --> kerteriz i
# 4. indeksten sonuna kadar
isim[4:] --> eriz ile Python öğreniyorum'
# İki değer de belirtilmemişse tüm stringi al.
isim[:] --> kerteriz ile Python öğreniyorum
#Son karaktere kadar al.
isim[:-1] --> kerteriz ile Python öğreniyoru'
# Baştan sona 2 değer atlaya atlaya stringi al.
isim[::2] --> krei l yhnörnyrm'
# 4.indeksten 12'nci indekse 3'er atlayarak stringi al.
isim[4:12:3] --> ezl

Bir string değişken ile metini tersine çevirmek, metini tersinden yazmak için aşağıdaki örneği inceleyebilirsiniz.

isim = "kerteriz ile Python öğreniyorum"
# Baştan sona -1 atlayarak stringi al.
isim[::-1] --> muroyinerğö nohtyP eli ziretrek

3. String Fonksiyonları

3.1 Metinin Karakter Uzunluğunu Öğrenme

Elinizdeki string değişkenin kaç karakterden oluştuğunu öğrenmek için len() fonksiyonunu kullanabilirsiniz.

a = "Merhaba Dünya!"
print(len(a)) # 14

3.2 Metindeki Boşlukları Temizleme

Bir metinin başındaki ve sonundaki boşlukları temizlemek için strip() fonksiyonunu kullanabilirsiniz.

a = " Suyu israf etmeyin! "
print(a.strip()) # "Suyu israf etmeyin!"

3.3 Metindeki Tüm Karakterleri Büyük Harfe Çevirme

Elinizdeki metini tamamen büyük harflere çevirmek istiyorsanız upper() fonksiyonunu kullanabilirsiniz.

a = "Ağaçlar ciğerlerimizdir"
print(a.upper()) # AĞAÇLAR CIĞERLERIMIZDIR

3.4 Metindeki Tüm Karakterleri Küçük Harfe Çevirme

Elinizdeki metini tamamen küçük harflere çevirmek istiyorsanız lower() fonksiyonunu kullanabilirsiniz.

a = "AĞAÇLAR CİĞERLERİMİZDİR"
print(a.lower()) # ağaçlar ciğerlerimizdir

3.5 Metindeki Karakterleri Başka Karakterlerle Değiştirmek

Metindeki bir karakter veya bir kelime grubunu başka bir karakter veya metin grubuyla değiştirmek istediğinizde replace() fonksiyonunu kullanabilirsiniz.

a = "Muz tatlı bir meyvedir"
print(a.replace("Muz", "Çilek")) #Çilek tatlı bir meyvedir

3.6 Metini İstenilen Bir Karakterden Bölmek

Elinizdeki belirlediğiniz bir karakterden bölerek diziye atayabilirsiniz. Aşağıdaki örnekte örnek kullanımını görebilirsiniz.

a = "Kayseri,Nevşehir,Kırşehir İç Anadolu bölgesindedir"
print(a.split(",")) # ['Kayseri', 'Nevşehir', 'Kırşehir İç Anadolu bölgesindedir']

4. Metin İçinde Karakter veya Metin Aramak

Bir metin editöründe nasıl karakter veya metin arayabiliyorsanız Python programlama diliyle de string değişkeniniz içinde in ve not in terimleriyle herhangi bir karakter veya metin arayabilirsiniz.

txt = "En sevdiğim hava yağmurlu havadır"
x = "mur" in txt
print(x) # True

Dönecek sonucu ter çevirmek istiyorsanız not terimini kullanabilirsiniz.

txt = "En sevdiğim hava yağmurlu havadır"
x = "mur" not in txt
print(x) # False

True ve False mantıksal (bool) ifadelerdir. Doğruysa True, Yanlışsa False değeri döner.

5. Metin Birleştirme, Toplama ve Çarpma

Bazı durumlarda elinizde bulunan string değerleri birbirleriyle birleştirmek ve yan yana eklemek isteyebilirsiniz. Bunun için matematiksel ifade olan + işareti kullanılır. Örneklerini aşağıda görebilirsiniz.

a = "Kerteriz"
b = " "
c = "Blog"
print(a+b+c) # Kerteriz Blog
print(c + "yazmak düzeldir") # Blog yazmak güzeldir

Bir kelimeyi veya karakteri istediğimiz adette yazmak için matematiksel ifade olan * işareti kullanılır. Örneklerini aşağıda görebilirsiniz.

a = "elma"
print(a*3) # elmaelmaelma

6. String Format Kullanımı

Yukarıdaki örneklerde birden fazla değişkeni birleştirmek için + işaretini nasıl kullanabileceğimizi gördük. Peki bir metin içinde belirli alanlar belirleyerek bu alanlara denk gelecek değerleri nasıl yazdırabiliriz? Bunun için format özelliğini kullanarak {} işaretinin geldiği yerlere sırasıyla değerlerimizi oturtabiliriz.

yas = 24
hava = "Yağmurlu"
hedef = "Okula"
metin = "Dün akşam {} yaşlarında bir genç {} havada yürüyerek {} gidiyordu"
print(metin.format(yas,hava,hedef)) # Dün akşam 24 yaşlarında bir genç Yağmurlu havada yürüyerek Okula gidiyordu

7. Kaçış (Escape) Karakterleri

Dersimizin en başında dediğimiz gibi bir string değişken belirlerken hangi işaretle başladıysanız o işaretle bitirmelisiniz ve aynı işaretten değişken içinde kullanmamalısınız. Bunu öncelikle bir hatırlayalım.

metin = "Bu aralar "Şeker Portakalı" kitabını okuyorum"
print(metin) # !! HATA !!

Böyle bir kullanımda hata alacaksınızdır. Çünkü ilk " işaretinden sonra gelen " işareti değişken tanımlamayı bitirir ama siz yazmaya devam ettiğiniz için hata alırsınız. Bu hatanın 2 çözüm yöntemi vardır. İlki " işareti yerine ' işareti kullanabilirsiniz.

metin = "Bu aralar 'Şeker Portakalı' kitabını okuyorum"
print(metin) # Bu aralar 'Şeker Portakalı' kitabını okuyorum

Fakat siz " işaretini kullanmak istiyorsanız devreye kaçış karakterleri dediğimiz \ işaretinin özel kullanımı giriyor. Eğer " işaretinin başlarına \ işaretini koyarsak Python bu işaretten sonra gelen karakteri normal bir karakter gibi yorumlayacak ve metine dahil edecektir.

metin = "Bu aralar \"Şeker Portakalı\" kitabını okuyorum"
print(metin) # Bu aralar "Şeker Portakalı" kitabını okuyorum

Örnekte gördüğünüz gibi herhangi bir özel karakter kullanmak istediğinizde \ işareti sizi kurtaracaktır. Aşağıdaki tablodan diğer örnekleri görebilirsiniz.