Metinlerle Çalışmak
Bölüm 3: Metinlerle Çalışmak: String İşlemleri
3.1 String Veri Tipi
Python’da stringler (metinler), harfler, rakamlar, semboller ve boşluklar gibi karakterlerden oluşan dizilerdir. Stringler, programlamada kullanıcıdan veri almak, veriyi işlemek ve çıktı üretmek için sıklıkla kullanılır. Örneğin, bir kullanıcının adını, bir web sitesinin adresini veya bir mesajı saklamak için stringler kullanabiliriz.
3.1.1 Stringleri Tanımlama
Python’da stringleri tanımlamak için, metni tek tırnak ('
) veya çift tırnak ("
) içine alırız. Örneğin:
= 'Merhaba Dünya!'
mesaj1 = "Python programlama dili" mesaj2
Hem mesaj1
hem de mesaj2
değişkenleri string veri tipini tutar. Tek tırnak veya çift tırnak kullanımı tamamen sizin tercihinize bağlıdır, ancak aynı string içinde aynı tür tırnak işaretini kullanmanız gerekir.
3.1.2 Çok Satırlı Stringler
Birden fazla satırdan oluşan stringler oluşturmak için üç tane tek tırnak ('''
) veya üç tane çift tırnak ("""
) kullanırız.
Örnek:
= """Bu,
uzun_mesaj çok satırlı
bir stringdir."""
print(uzun_mesaj)
Çıktı:
Bu,
çok satırlı
bir stringdir.
3.2 String Metotları
Python, stringler üzerinde birçok işlem yapmak için kullanabileceğiniz birçok metot sunar. Metotlar, bir nesne üzerinde belirli bir işlemi gerçekleştirmek için kullanılan fonksiyonlardır. String metotlarına erişmek için, string değişkeninin adını yazdıktan sonra nokta (.
) koyarız ve ardından metodun adını yazarız.
3.2.1 Temel String Metotları
İşte bazı temel string metotları:
len()
: Bir stringin uzunluğunu (karakter sayısını) döndürür.= "Merhaba" mesaj = len(mesaj) # uzunluk değişkeninin değeri 7 olur uzunluk print(uzunluk)
upper()
: Bir stringi büyük harfe dönüştürür.= "Merhaba" mesaj = mesaj.upper() # buyuk_harf değişkeninin değeri "MERHABA" olur buyuk_harf print(buyuk_harf)
lower()
: Bir stringi küçük harfe dönüştürür.= "Merhaba" mesaj = mesaj.lower() # kucuk_harf değişkeninin değeri "merhaba" olur kucuk_harf print(kucuk_harf)
capitalize()
: Bir stringin ilk harfini büyük harfe, diğer harflerini küçük harfe dönüştürür.= "merhaba dünya" mesaj = mesaj.capitalize() # baslik değişkeninin değeri "Merhaba dünya" olur baslik print(baslik)
title()
: Bir stringdeki her kelimenin ilk harfini büyük harfe, diğer harflerini küçük harfe dönüştürür.= "python programlama dili" mesaj = mesaj.title() # baslik değişkeninin değeri "Python Programlama Dili" olur baslik print(baslik)
strip()
: Bir stringin başındaki ve sonundaki boşlukları siler.= " Merhaba Dünya! " mesaj = mesaj.strip() # temiz_mesaj değişkeninin değeri "Merhaba Dünya!" olur temiz_mesaj print(temiz_mesaj)
replace()
: Bir stringdeki belirli bir alt stringi başka bir alt string ile değiştirir.= "Merhaba Dünya!" mesaj = mesaj.replace("Dünya", "Python") # yeni_mesaj değişkeninin değeri "Merhaba Python!" olur yeni_mesaj print(yeni_mesaj)
split()
: Bir stringi belirli bir karaktere göre böler ve bir liste döndürür.= "elma,armut,muz" mesaj = mesaj.split(",") # meyveler listesi ["elma", "armut", "muz"] olur meyveler print(meyveler)
find()
: Bir stringdeki belirli bir alt stringin ilk bulunduğu indeksi döndürür. Eğer alt string bulunmazsa-1
döndürür.= "Merhaba Dünya!" mesaj = mesaj.find("Dünya") # indeks değişkeninin değeri 7 olur indeks print(indeks)
count()
: Bir string içinde belirli bir alt stringin kaç kez geçtiğini sayar. Eğer alt string bulunmazsa 0 döndürür.
= "Merhaba Dünya!"
metin
print(metin.count("a")) # Çıktı: 3
3.2.2 String Formatlama (String Formatting)
String formatlama, stringler içine değişkenlerin değerlerini veya diğer ifadelerin sonuçlarını eklemek için kullanılır. Python’da string formatlama için birkaç farklı yöntem vardır. İşte en yaygın kullanılan üç yöntem:
1. %
Operatörü ile Formatlama
Bu yöntem, C dilindeki printf()
fonksiyonuna benzer. %
operatörü, string içinde yer tutucu olarak kullanılır ve ardından değişkenlerin değerleri veya diğer ifadeler gelir.
Örnek:
= "Ahmet"
isim = 30
yas
= "Benim adım %s ve yaşım %d" % (isim, yas)
mesaj print(mesaj) # Çıktı: Benim adım Ahmet ve yaşım 30
Bu örnekte, %s
bir string yer tutucu, %d
ise bir integer yer tutucudur. %
işaretinden sonra parantez içinde yer tutuculara karşılık gelen değerler gelir.
2. .format()
Metodu ile Formatlama
.format()
metodu, string içinde süslü parantezler ({}
) kullanarak yer tutucular oluşturur ve ardından bu yer tutuculara karşılık gelen değerler .format()
metoduna argüman olarak verilir.
Örnek:
= "Ahmet"
isim = 30
yas
= "Benim adım {} ve yaşım {}".format(isim, yas)
mesaj print(mesaj) # Çıktı: Benim adım Ahmet ve yaşım 30
Bu örnekte, {}
yer tutucuları, .format()
metodunda sırasıyla isim
ve yas
değişkenlerine karşılık gelir.
3. f-Stringler (Python 3.6 ve Sonrası)
f-Stringler, string formatlamanın en yeni ve en okunabilir yöntemidir. Stringin başına f
harfi eklenir ve süslü parantezler ({}
) içine doğrudan değişkenlerin veya diğer ifadelerin adları yazılır.
Örnek:
= "Ahmet"
isim = 30
yas
= f"Benim adım {isim} ve yaşım {yas}"
mesaj print(mesaj) # Çıktı: Benim adım Ahmet ve yaşım 30
Bu örnekte, {isim}
ve {yas}
ifadeleri, sırasıyla isim
ve yas
değişkenlerinin değerlerine karşılık gelir.
3.2.3 String İndeksleme (Indexing) ve Dilimleme (Slicing)
Stringler, karakterlerden oluşan bir dizidir. Her karakterin, string içinde bir indeksi (index) vardır. İndeksler 0’dan başlar. Yani, bir stringin ilk karakterinin indeksi 0, ikinci karakterinin indeksi 1’dir ve bu şekilde devam eder.
Python’da, bir stringin belirli bir karakterine erişmek için indeksini köşeli parantez ([]
) içine yazarız. Örneğin:
= "Merhaba"
mesaj
= mesaj[0] # ilk_harf değişkeninin değeri "M" olur
ilk_harf = mesaj[1] # ikinci_harf değişkeninin değeri "e" olur
ikinci_harf = mesaj[6] # son_harf değişkeninin değeri "a" olur
son_harf
print(ilk_harf)
print(ikinci_harf)
print(son_harf)
Negatif İndeksleme:
Python’da, stringlere sondan başlayarak da indeksleme yapabiliriz. Bunun için negatif indeksler kullanırız. Son karakterin indeksi -1, sondan ikinci karakterin indeksi -2’dir ve bu şekilde devam eder.
= "Merhaba"
mesaj
= mesaj[-1] # son_harf değişkeninin değeri "a" olur
son_harf = mesaj[-2] # sondan_ikinci_harf değişkeninin değeri "b" olur
sondan_ikinci_harf
print(son_harf)
print(sondan_ikinci_harf)
Dilimleme (Slicing):
String’lerin belirli bir bölümünü almak için dilimleme işlemini kullanabiliriz. Dilimleme, başlangıç ve bitiş indeksleri belirtilerek yapılır. Başlangıç indeksi dahil, bitiş indeksi hariçtir.
= "Merhaba Dünya!"
mesaj
= mesaj[0:3] # ilk_uc_harf değişkeninin değeri "Mer" olur
ilk_uc_harf = mesaj[8:13] # dunya değişkeninin değeri "Dünya" olur
dunya
print(ilk_uc_harf)
print(dunya)
Başlangıç veya bitiş indeksini belirtmezsek, varsayılan olarak stringin başlangıcından veya sonuna kadar alınır.
= "Merhaba Dünya!"
mesaj
= mesaj[:6] # ilk_alti_harf değişkeninin değeri "Merhab" olur
ilk_alti_harf = mesaj[7:] # son_bes_harf değişkeninin değeri "Dünya!" olur
son_bes_harf
print(ilk_alti_harf)
print(son_bes_harf)
İndeks Hatası (IndexError):
Eğer stringin uzunluğundan büyük veya eşit bir indeks kullanırsanız, Python bir IndexError
hatası verecektir. Örneğin:
= "Merhaba"
mesaj = mesaj[7] # IndexError: string index out of range harf
3.2.4 Escape Karakterleri
Bazı karakterleri string içinde doğrudan kullanamayız. Örneğin, çift tırnak içinde çift tırnak kullanmak istiyorsak, escape karakteri olan ters bölü (\
) kullanmamız gerekir.
= "Bu bir \"tırnak işareti\" örneğidir."
mesaj print(mesaj) # Çıktı: Bu bir "tırnak işareti" örneğidir.
Diğer yaygın escape karakterleri:
\n
: Yeni satır\t
: Tab\\
: Ters bölü
3.2.5 Stringlerin Değiştirilemezliği (Immutability)
Python’da stringler değiştirilemez (immutable) veri tipleridir. Yani, bir string oluşturulduktan sonra, karakterleri değiştirilemez.
= "Merhaba"
mesaj 0] = "m" # TypeError: 'str' object does not support item assignment mesaj[
String’leri değiştirmek için, yeni bir string oluşturmamız gerekir.
3.2.6 String Metotlarının Zincirlenmesi (Method Chaining)
Birçok string metodunu art arda çağırarak, string üzerinde birden fazla işlem yapabiliriz.
= " MERHABA DÜNYA! "
mesaj = mesaj.strip().lower()
temiz_mesaj print(temiz_mesaj) # Çıktı: merhaba dünya!
Bu örnekte, strip()
metodu ile baştaki ve sondaki boşluklar silinir, ardından lower()
metodu ile string küçük harfe dönüştürülür.
3.2.7 in
ve not in
Operatörleri
Bir stringin başka bir string içinde olup olmadığını kontrol etmek için in
ve not in
operatörlerini kullanabiliriz.
= "Merhaba Dünya!"
mesaj
if "Dünya" in mesaj:
print("Mesajda 'Dünya' kelimesi geçiyor.")
if "Python" not in mesaj:
print("Mesajda 'Python' kelimesi geçmiyor.")
3.2.8 ASCII ve Unicode
Bilgisayarlar, metinleri ve karakterleri sayılarla temsil eder. Bu temsil için kullanılan iki temel sistem vardır: ASCII ve Unicode.
- ASCII (American Standard Code for Information Interchange): İngilizce alfabesindeki harfler, rakamlar ve bazı özel karakterler için 128 farklı karakteri temsil eden bir kodlama sistemidir.
- Unicode: Dünya dillerindeki hemen hemen tüm karakterleri kapsayan, çok daha geniş bir kodlama sistemidir. Python 3, varsayılan olarak Unicode kullanır.
3.3 Bölüm Sonu Quiz
- Aşağıdaki kod bloğunun çıktısı nedir?
= " Python Programlama "
mesaj print(len(mesaj.strip()))
- Aşağıdaki kod bloğunun çıktısı nedir?
= "merhaba dünya"
metin print(metin.title())
- Aşağıdaki kod bloğunda boşluğa hangi ifade gelmelidir?
= "Ali"
isim = "Veli"
soyisim
= f"Benim adım {isim} ______________"
mesaj print(mesaj) # Çıktı: Benim adım Ali Veli
- Aşağıdaki kod bloğunun çıktısı nedir?
= "kalem"
kelime print(kelime.replace("a", "e"))
- Aşağıdaki kod bloğunun çıktısı nedir?
= "Bu bir cümledir."
cümle print(cümle.split()[2])
- Aşağıdaki kod bloğunun çıktısı nedir?
= "Bilgisayar"
kelime print(kelime[3:6])
- Aşağıdaki kod bloğunun çıktısı nedir?
= "Programlama"
kelime print(kelime[:-4])
- Aşağıdaki kod bloğunun çıktısı nedir?
= "Python"
mesaj
for i in range(len(mesaj)-1, -1, -1):
print(mesaj[i], end="")
- Aşağıdaki kod bloğunun çıktısı nedir?
= "Python Öğreniyorum"
mesaj
if "Python" in mesaj:
print("Evet")
else:
print("Hayır")
- Aşağıdaki kod bloğunun çıktısı nedir?
= " Merhaba Dünya! "
metin = metin.strip().replace("Dünya", "Python").upper()
yeni_metin print(yeni_metin)
- Aşağıdaki kod bloğunda boşluğa hangi ifade gelmelidir?
= "Programlama"
kelime print(kelime[2:_______:-1]) # Çıktı: arg
- Aşağıdaki çıktıyı veren Python kodunu yazın:
y
h
t
o
n
- Kullanıcıdan bir string girdisi alın ve bu stringin palindrom olup olmadığını kontrol eden bir program yazın. (Palindrom, tersten okunduğunda da aynı olan kelime veya cümlelerdir.)