Python ile “String” Kullanımı ve Metotları
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?
İngilizce bir sözlüğü açıp baktığınızda, “string” kelimesinin “dizi”, “sıra”, “boncuk dizme” gibi anlamlara geldiğini göreceksiniz. Peki, bu terim neden metinsel veri tipleri için bir ad olmuş?
Şöyle cevap verelim; bir kelimeyi düşündüğünüzde, harflerin belirli bir sırayla dizildiğini fark edeceksinizdir. Örneğin, “elma” kelimesini oluşturmak için “e”, “l”, “m” ve “a” harflerini bu sırayla bir araya getiririz. İşte programlama dillerinde de tam da buna benzer bir mantıkla, karakterlerden oluşan bir dizi oluştururuz ve buna “string” deriz.
Özetle, “string” veri tipi, belirli bir sırayla bir araya gelmiş bir veya daha fazla karakterden (harf, rakam, sembol, vb.) oluşan bir karakter dizisidir ve bunların metinsel olarak temsil edilmesi için kullanılır.
Python ile “String” Kullanımı
Python’da, stringler çok esnek ve işlevseldir. Metin verilerini saklamak, almak, işlemek ve değiştirmek için stringleri kullanırız. Örneğin, bir kullanıcının girdiği metni almak, bu metni düzenlemek veya bir dosyaya yazmak için stringler kullanılır. Peki, nasıl oluyor bu?
Python’da “string” kullanımı, Python’ın bize önceden hazırlayıp sunduğu ve platformda gömülü halde (built-in) bulunan “str” sınıfının nesneleri sayesinde mümkün hale gelmektedir. Yani Python’da bir metin oluşturduğumuzda, aslında Python’ın “str” sınıfından bir nesne oluşturmuş oluyoruz.
İşin güzel yanı, Python bu işlemleri arka planda bizim yerimize hallediyor, bu sayede metinlerimizi oluşturup arka planda nasıl çalışabilir olduğunu düşünmeden işimize bakabiliyoruz.
Python’da “String” Bildirimi
Python’da metinsel veri tiplerini, yani stringler’i, çıktılar arasında hiçbir fark olmadan dört farklı tırnak seçeneği ile oluşturabiliriz. Bakınız:
- Tek Tırnak içinde (
' '
) - İki tırnak içinde (
" "
) - Üç tane tek tırnak içinde (
''' '''
) - Üç tane çift tırnak içinde (
""" """
)
Fark edileceği üzere Python’da stringler tek tırnak (‘ ‘), çift tırnak (” “) veya üç tırnak (”’ ”’ veya “”” “””) içine alınarak tanımlanabilir. Peki, bu farklı alternatifler neden var?
Her ne kadar çıktılar arasında hiçbir fark olmasa da bazı kullanım pratiklerine duyulan ihtiyaç nedeniyle dört farklı tırnak yapısı bulunmaktadır. Maddeler halinde özetlersek anlaşılacaktır. Bakınız:
- Çakışmayı önlemek: Python’da, bir string içerisinde tırnak işareti kullanılması gerektiğinde, bu işareti string’i tanımlamak için kullanılan dış tırnaklarla karıştırmamak adına farklı türde tırnaklar kullanmak gerekir. Eğer string içinde tek tırnak (‘ ‘) bulunuyorsa, string’i tanımlamak çift tırnak (” “) kullanmak gerekir. Benzer şekilde, eğer string içinde çift tırnak (” “) bulunuyorsa, string’i tanımlarken tek tırnak (‘ ‘) kullanmak gerekir. Örneğin:
1 2 |
mesaj1 = 'Python programlama dilinin adı "piton" yılanından gelmez.' mesaj2 = "Python'da tek satırlık açıklama için '#' işareti kullanılır." |
Yukarıdaki örnekte, mesaj1
içerisinde çift tırnak işareti bulunduğu için, dış tırnaklar olarak tek tırnak işareti kullanıldı. Aynı şekilde, mesaj2
içerisinde tek tırnak işareti bulunduğu için, dış tırnaklar olarak çift tırnak işareti kullanıldı. Bu yaklaşım, tırnak işaretleri nedeniyle oluşabilecek hataları önler.
- Okunabilirlik: Tek ve çift tırnaklar arasında bir fark olmamasına rağmen, bazen belirli bir kod parçasının okunabilirliği açısından birini diğerine tercih etmek daha iyi olabilir. Örneğin, İngilizce’de kelime içinde tek tırnak (apostrof) kullanımı yaygındır. Bu nedenle, İngilizce metin içeren stringler için çift tırnak kullanmak daha okunabilir olabilir.
- Çok satırlı metinler: Python’da, tek tırnak veya çift tırnak ile tanımlanan stringler tek satırlıdır. Eğer bir string birden fazla satırı kapsıyorsa, bu string üç tırnak (
""" """
veya''' '''
) kullanılarak tanımlanmalıdır. Örneğin:
1 2 3 4 5 6 7 8 9 10 |
# """ """ veya ''' ''' paragraf = """Python, Guido van Rossum tarafından geliştirilen, yüksek seviyeli, genel amaçlı bir programlama dilidir.""" veysel = ''' Uzun ince bir yoldayım Gidiyorum gündüz gece Bilmiyorum ne haldayım Gidiyorum gündüz gece. ''' |
Hatırlarsanız, “string” tanımı yaparken bunların birer karakter dizisi olduğunu söylemiştik. Yani bu demektir ki, indeks numaralarını kullanarak metinsel ifadelerdeki belirli bir karaktere; [indeks numarası] şeklinde erişebileceğimiz anlamına gelir. Bakınız:
1 2 3 |
string = 'Merhaba' print(string[1]) # çıktı: e |
❗ İndex değeri 0’dan başlar.
❗ Python’da stringler değiştirilemezdir, yani immutable’dır. Bir kez oluşturulduktan sonra, içeriğini değiştiremezsiniz. Bunun yerine, yeni bir string oluşturmanız gerekir. Örneğin:
1 2 |
isim = "Ali" isim[0] = "a" |
Yukarıdaki kod parçası çalıştırıldığında, Python yandaki hatayı döndürür: TypeError: 'str' object does not support item assignment
Python’da “String’lerin” Birleştirilmesi
Python’da string’leri birleştirmek, metin işleme işlemlerinin temel bir parçasıdır ve Python bu işlemi yapmayı oldukça kolaylaştırır. Aşağıda, Python’da metinleri birleştirme yöntemlerini bulabilirsiniz:
- Artı (+) Operatörü ile Birleştirme: Python’da iki metni birleştirmek için yaygın olarak
+
operatörü kullanılmaktır. Bu operatör, solundaki ve sağındaki metinleri birleştirir.
1 2 3 4 5 |
ad = "John" soyad = "Doe" tam_isim = ad + " " + soyad print(tam_isim) # Çıktı: John Doe |
- % Operatörü ile Biçimlendirme: C dilindeki programlama stilini taklit ederek,
%
operatörünü kullanarak metinleri birleştirebilirsiniz. Bakınız:
1 2 3 4 |
ad = "John" soyad = "Doe" print("Merhaba, benim adım %s %s." % (ad, soyad)) # Çıktı: Merhaba, benim adım John Doe. |
- str.format() Metodu ile Biçimlendirme: Python’ın
str.format()
metodu, belirtilen konuma değerleri yerleştirerek bir metni biçimlendirmenizi sağlar.
1 2 3 4 5 6 7 8 9 10 |
#Örnek 1 ad = "John" soyad = "Doe" print("Merhaba, benim adım {} {}.".format(ad, soyad)) # Çıktı: Merhaba, benim adım John Doe. #Örnek 2 yas = 27 metin = "Benim adım Python, ve ben {} yaşındayım!" print(metin.format(yas)) |
❗ Python’daki format ()
metodu ile farklı veri tiplerinde değerler string veri tipi içerisinde kullanabilir. Bakınız:
1 2 3 4 5 |
adet = 3 urun = 250 fiyat = 99.95 siparis = "Ben {} parça {} numaralı üründen {} TL karşılığında alacağım." print(siparis.format(adet, urun, fiyat)) |
❗ Eğer metinde kullanılmak istenilen değerlerin doğru sıra ile yansıtılmasını isteniyorsa {} yerine {0}, {1}, {2}… şeklinde indeksleme yapılabilir.
1 2 3 4 5 |
adet = 3 urun = 250 fiyat = 99.95 siparis = "Ben {0} parça {1} numaralı üründen {2} TL karşılığında alacağım." print(siparis) |
- f-string ile Biçimlendirme: Python 3.6 ve sonrası sürümlerde, f-string kullanarak metinleri birleştirme işlemini daha da basitleştirebilirsiniz. Örneğin:
1 2 3 4 |
ad = "John" soyad = "Doe" print(f"Merhaba, benim adım {ad} {soyad}.") # Çıktı: Merhaba, benim adım John Doe. |
Python “String” Metotları
Python’da stringler üzerinde çeşitli işlemler yapmak için bir dizi yerleşik metot bulunmaktadır. Bu metotlar, stringlerle çalışmayı kolaylaştırmak için tasarlanmıştır. Aşağıdaki taboda yaygnı bir şekilde kullanılan string metotları listelenmiştir:
Metot | Görevi |
---|---|
upper() | Bir stringin tüm karakterlerini büyük harfe çevirir. |
lower() | Bir stringin tüm karakterlerini küçük harfe çevirir. |
capitalize() | Bir stringin ilk harfini büyük yapar. |
title() | Bir stringdeki her kelimenin ilk harfini büyük yapar. |
strip() | Bir stringin başında ve sonunda bulunan boşlukları kaldırır. |
replace() | Bir string içindeki belirli bir alt stringi başka bir alt string ile değiştirir. |
find() | Bir string içinde belirli bir alt stringin ilk kez bulunduğu indeksi döndürür. Eğer aranan alt string bulunamazsa, -1 döndürür. |
count() | Bir string içinde belirli bir alt stringin kaç kez geçtiğini döndürür. |
startswith() | Bir stringin belirli bir alt string ile başlayıp başlamadığını kontrol eder. |
endswith() | Bir stringin belirli bir alt string ile bitip bitmediğini kontrol eder. |
split() | Belirtilen ayırıcıya göre bir stringi böler ve parçaları bir liste olarak döndürür. |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
#string metotları metin = "merhaba dünya" # Metnin tüm harflerini büyük yapar print(metin.upper()) # Çıktı: MERHABA DÜNYA # Metnin tüm harflerini küçük yapar print(metin.lower()) # Çıktı: merhaba dünya # Metnin ilk harfini büyük yapar print(metin.capitalize()) # Çıktı: Merhaba dünya # Metnin her kelimesinin ilk harfini büyük yapar print(metin.title()) # Çıktı: Merhaba Dünya # Metnin başında ve sonunda bulunan boşlukları kaldırır print(metin.strip()) # Çıktı: merhaba dünya # Metinde belirtilen alt stringi belirtilen başka bir alt string ile değiştirir print(metin.replace("dünya", "Python")) # Çıktı: merhaba Python # Metinde belirtilen alt stringin ilk bulunduğu indeksi döndürür print(metin.find("dünya")) # Çıktı: 8 # Metinde belirtilen alt stringin kaç kez geçtiğini döndürür print(metin.count("a")) # Çıktı: 2 # Metnin belirtilen alt string ile başlayıp başlamadığını kontrol eder print(metin.startswith("mer")) # Çıktı: True # Metnin belirtilen alt string ile bitip bitmediğini kontrol eder print(metin.endswith("nya")) # Çıktı: True # Belirtilen ayırıcıya göre metni böler ve parçaları bir liste olarak döndürür print(metin.split()) # Çıktı: ['merhaba', 'dünya'] |
Yukarıdaki örneğimizde metin
adında bir string değişkeni tanımladık ve bu değişken üzerinden çeşitli string metotları kullanarak işlemlerimizi yaptık. Her bir metot ve işlevi hakkında açıklayıcı yorumlar eklenmiştir. Bu örneği ken