Pythonda String Tanımlama
Pythonda Karakter Dizileri yani string veri tipleri tek tırnak (‘ ‘) ya da çift tırnak (“ “) ile oluşturulur.
‘Hello World’ ile “Hello World” tanımlaması aynıdır. Ancak bazen karakter dizileri içerisinde tek tırnak karakterini karakter dizisinin bir elemanı gibi göstermek isteriz.
“I’m from Turkey” şeklinde tek tırnak karakterini tanımlayabilmek için mecburen çift tırnak kullanmamız gerekir çünkü ‘I’m from Turkey’ bu şekilde bir kullanım hata verecektir.
Birden Fazla Satırda String Tanımlama
3 tırnak ile birden fazla satırda string tanımlaması yapabilirsiniz. 3 tane tek tırnak ya da 3 tane çift tırnak kullanabilirsiniz.
1
2
3
4
5
6
7
8
9
text = """Lorem ipsum dolor sit amet,
consectetur adipiscing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua."""
print(text)
String Birleştirme (String Concatenation)
Tanımladığımız string ifadeleri ‘+’ operatörü ile birleştirebiliriz. Ancak string birleştirmede number değişkenleri str() ile string’e çevirmemiz gerekiyor.
1
2
3
4
5
6
7
8
9
name = 'Sonsuz'
surname = 'Us'
age = 42
greeting = 'My name is '+ name + ' '+ surname + ' and \nI am '+ str(age) + ' years old.'
print(greeting)
Bu şekilde değişken içeriklerine göre bir string ifadeyi + operatörü ile oluşturmuş olduk ve age değişkeni number türünde olduğundan dolayı str(age) şeklinde string’ e çevirdik.
String Formatlama
’+’ operatörünü kullanarak string birleştirme işlemi bazen zor olabiliyor. Dolayısıyla kullanabileceğimiz format() metodu ile f-string isminde iki farklı alternatifimiz mevcut.
String format() Metodu
1
2
3
name = 'Deniz'
surname = 'Şimşek'
age = 14
.format() metoduna vereceğimiz her parametre sırasıyla { }’ lerin yerine kopyalanır.
1
print('My name is {} {}'.format(name, surname)) # My name is Deniz Şimşek
Gördüğünüz gibi birinci { }’ in yerine Deniz ikinci { }’ in yerine ise Şimşek yazdırılır.
1
print('My name is {1} {0}'.format(name, surname))
{ }’ ler için indeks numarası da verebiliriz. Yani format metodu içindeki name, 0 ve surname, 1 değerlerini alır.
1
print('My name is {s} {n}'.format(n=name, s=surname))
format() metodu içindeki değişkenlere takma isim de verebiliriz.
1
print("My name is {} {} and I'm {} years old.".format(name, surname, age))
age 3. süslü parantezin yerine gelir ayrıca age number olduğundan dolayı format() metodunda str() fonksiyonunu kullanmamız gerekmez.
1
print("My name is {} {} and I'm {} years old.".format(name, name, name))
format içine eklediğimiz 3 tane name değişkeni sırasıya süslü parantezler yerine gelir. Eğer ki tek name değerini 3 kere yazdırmak istersek, {0} şeklinde kullanabiliriz.
1
print("My name is {0} {0} and I'm {0} years old.".format(name))
f-String ile String Formatlama
f-string ile kolaylıkla string birleştirme işlemi yapabiliriz. Çünkü string ifadenin içinde süslü parantezler içinde değişkenleri yazabiliriz.
1
print(f"My name is {name} {surname} and I'm {age} years old.")
String Parçalama (String Slicing)
String veri tipleri bir karakter dizisi olarak anılır yani bir karakter listesi olarak tanımlanırlar. Dizilerin her bir karakterine soldan 0’ dan başlayarak bir indeks numarası atanır. Atanan indeks numaraları dizi içerisindeki her bir elemana ulaşırken kullanılır.
1
2
3
result = greeting[0]
print(result)
gördüğünüz gibi greeting karakter dizisinin ilk elemanı soldan sağa doğru 0 indeks numarası ile başlar ve greeting[0] dediğimizde bize 0.indeksteki M karakteri gelir.
1
2
3
result = greeting[3]
print(result) # n
Pozitif indeks numarası soldan sağa 0’dan başlar negatif indeks numarası ise -1 ile sağdan başlar.
1
2
3
result = greeting[-1]
print(result) # .
greeting karakter dizisinin son elemanı “.” karakteridir.
Karakter dizilerinin daha doğrusu dizilerin eleman sayısını len() metodu ile bulabiliriz.
1
2
3
result = len(greeting)
print(result)
Dolayısıyla son elemanın indeks numarası toplam karakter sayısından 1 eksik olur.
1
2
3
4
5
result = greeting[len(greeting)-1]
print(result) # .
Bir karakter dizisini başlangıç ve bitiş aralığında istediğimiz şekilde bölebiliriz.
1
2
3
result = greeting[3:7]
print(result) # name
3 indeksden başlayarak 7. indekse kadar olan karakterleri alıyoruz. Son indeks işin içine katılmıyor.
1
2
3
result = greeting[:7]
print(result) # My name
Burada ise başlangıç indeksini belirtmediğimizden dolayı en başta başlar ve 7. indekse kadar gider.
1
2
3
result = greeting[3:]
print(result)
Burada ise başlangıç indeksi 3 ve bitiş indeksi belirtilmediğinden dolayı en sona kadar alınır.
1
2
3
result = greeting[0:10:2]
print(result)
Burada ise 0. indeksten 10. indekse kadar alınır ancak adım sayısı 2 olarak belirtildiğinden dolayı bir karakter alınır bir diğeri alınmaz.
Adım sayısını soldan sağa doğru olduğuna dikkat ediniz.
1
2
3
result = greeting[0:10:1]
print(result) # My name is
Adım sayısı 1 olduğundan dolayı [0:10] ile gene aynı sonucu verir. Ancak adım sayısına pozitif değer yerine negatif değer verirsek bu durumda sağdan sola doğru ilerleriz.
Dolayısıyla karakterleri tersten yazdırmak istediğimizde aşağıdaki gibi sonuç alırız. [::] ile tüm karakter dizisini al ancak adım sayısı negatif olduğundan sağdan sola doğru birer birer ilerle. Dolayısıyla yazı tersten yazdırılmış olur.
1
2
3
result = greeting[::-1]
print(result)
Python String Uygulamaları
1
2
3
website = "https://sonsuzus.github.io"
course = "Python Kursu: Baştan Sona Python Programlama"
1- ‘course’ karakter dizisinde kaç karakter bulunmaktadır ?
1
2
3
length = len(course)
length = len(website)
2- ‘website’ içinden https karakterlerini alın.
3- ‘website’ içinden io karakterlerini alın.
1
result = website[length-3:length]
4- ‘course’ içinden ilk 15 ve son 15 karakterlerini alın.
1
2
3
4
5
result = course[0:15]
result = course[:15]
result = course[-15:]
5- ‘course’ ifadesindeki karakterleri tersten yazdırın.
1
result = course[::-1]
1
name, surname, age, job = 'Ada Su','Tetik', 15, 'öğrenci'
6- Yukarıda verilen değişkenler ile ekrana aşağıdaki ifadeyi yazdırın.
‘Benim adım Ada Su Tetik, Yaşım 15 ve mesleğim öğrenci.’
1
2
3
4
5
result = "Benim adım "+ name+ " " + surname+ ", Yaşım "+ str(age) + " ve mesleğim "+ job
result = "Benim adım {0} {1}, Yaşım {2} ve mesleğim {3}.".format(name,surname,age,job)
result = f'Benim adım {name} {surname}, Yaşım {age} ve "mesleğim" {job}.'
Pythonda string metotları nelerdir ve nasıl kullanırız?
Split Metodu
Split metodu, karakter dizisinde belirtilen bir karaktere göre parçalama işlemi yapar.
1
2
3
message = 'Hello, There.'
message = message.split(',') # ['Hello',' There']
Karakter dizisini ’,’ karakterinden parçalara ayırır ve bize bir liste gönderir.
Split metoduna bir parametre göndermediğimizde ise, boşluk karakterinden parçalama yapılır.
1
2
3
message = 'Hello, There.'
message = message.split() # ['Hello,', 'There.']
Upper Metodu
Upper metodu, karakterleri büyük harfe çevirir.
1
2
3
message = 'Hello There.'
message = message.upper() # HELLO THERE.
Lower Metodu
Lower metodu, karakterleri büyük harfe çevirir.
1
2
3
message = 'HELLO THERE.'
message = message.upper() # Hello There.
title() metodu, karakter dizisindeki her kelimenin baş harfini büyük harfe çevirir.
capitalize(), karakter dizisindeki sadece ilk kelimenin baş harfini büyük harfe çevirir.
Strip Metodu
Strip metodu, karakter dizisinin baş ve sondaki boşluk karakterlerini siler.
1
2
3
4
5
username = " sonsuzus "
x = username.strip()
print("my username is + x") # my username is sonsuzus
Eğer strip() metodunun belirttiğimiz karakterleri silmesini istersek bu karakteri parametre olarak göndermemiz gerekir.
1
2
3
4
5
username = ",,,,...!!sonsuzus***"
x = username.strip(',.!*')
print("my username is + x") # my username is sonsuzus
Replace Metodu
Replace metodu karakter güncellemesi için kullanılır.
1
2
3
message = 'My name is Sonsuz Us'
message = message.replace('Sonsuz','Sessiz') # My name is Sessiz Us
replace() metotlarını ard arda kullanabiliriz.
1
2
3
4
5
6
url = url.replace(' ','-')
.replace('@','')
.replace('ö','o')
.replace('ü','u')
.replace('ş,'s')
.replace('ü','u')
şeklinde türkçe karakterleri, boşluk karakterlerini ve ‘@’ işaretini url içinde güncelleyebiliriz.
Find Metodu
Find metodu verilen string ifade içinde arama yapar ve bulduğu ilk indeks numarasını döndürür. Eğer bulamazsa exception döndürür.
1
2
3
4
5
txt = "My name is Sonsuz Us."
x = txt.find("name")
print(x) # x = 3
name string içerisinde 3.indeks numarasından itibaren başladığından dolayı 3 değeri yazdırılır.
Index Metodu
index metodu verilen string ifade içinde arama yapar ve bulduğu ilk indeks numarasını döndürür. Eğer bulamazsa find metodundan farklı olarak geriye -1 değerini döndürür.
1
2
3
txt = "My name is Sonsuz Us."
x = txt.index("name")
print(x) # x = 3
Eğer ki string içinde olmayan bir ifadeyi aratırsak geriye -1 döner.
1
2
3
txt = "My name is Sonsuz Us."
x = txt.index("old")
print(x) # x = -1
old, string içinde bulunmadığından dolayı -1 döner.
Ayrıca index ve find metodu için bir arama kapsamı belirtebiliriz.
1
index("aranılacak ifade", "başlangıç indeksi","bitiş indeksi")
1
2
3
4
5
txt = "My name is Sonsuz Us."
x = txt.index("name",0,10)
print(x) # x = 3
0 ile 10. indeks arasında bir arama yapılır.
String Metot Uygulamaları
1
2
3
website = "http://www.sadikturan.com"
course = "Python Kursu: Baştan Sona Python Programlama Rehberiniz (40 saat)"
1- ‘ Hello World ‘ karakter dizisinin baş ve sondaki boşluk karakterlerini silin.
1
2
3
4
5
6
7
result = ' Hello World '.strip() # baş ve sondaki boşluk karakterleri silinir.
result = ' Hello World '.lstrip() # baştaki boşluk karakterleri silinir.
result = ' Hello World '.rstrip() # sondaki boşluk karakterleri silinir.
result = website.lstrip('/:pth') # baştan itibaren '/:pth' karakteri silinir. result "www.sadikturan.com" değerini alır.
2- ‘www.sadikturan.com’ içindeki sadikturan bilgisi haricindeki her karakteri silin.
1
result = 'www.sadikturan.com'.strip('w.moc')
3- ‘course’ karakter dizisinin tüm karakterlerini küçük harf yapın.
1
2
3
4
5
result = course.lower() # küçük harfe çevrilir.
result = course.upper() # büyük harfe çevrilir.
result = course.title() # her kelimenin baş harfe büyük harfe çevrilir.
4- ‘website’ içinde kaç tane a karakteri vardır ? (count(‘a’))
1
2
3
4
5
result = website.count('a') # a karakteri sayılır.
result = website.count('www') # www karakterleri sayılır.
result = website.count('www',0,10) # 0 ile 10. indeks arasında www ifadesi sayılır.
5- ‘website’ “www” ile başlayıp com ile bitiyor mu?
1
2
3
4
5
result = website.startswith('www') # website www ile başlıyor mu ? False
result = website.startswith('http') # website http ile başlıyor mu ? True
result = website.endswith('com') # website com ile bitiyor mu ? True
6- ‘website’ içinde ‘com’ ifadesi var mı?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
result = website.find('com') # website içerisinde 'com' ifadesini arar ve geriye 22 döner.
result = website.find('com',0,10) # 0 ile 10 arasında com ifadesini bulamaz ve exception döndürür.
result = course.find('Python') # 0.indeksten itibaren bulduğu ilk Python için 0 değeri döner.
result = course.rfind('Python') # Aramaya sağdan başlayacağından dolayı 2. Python' i 26. indekste bulur.
result = website.index('com') # website içerisinde 'com' ifadesini arar ve geriye 22 döner.
result = website.rindex('com') # website içerisinde 'com' ifadesini arar ve geriye 22 döner.
result = website.rindex('comm') # comm bulunamadığından "ValueError: substring not found" hatası gelir.
7- ‘course’ içindeki karakterlerin hepsi alfabetik mi? (isalpha, isdigit)
1
2
3
4
5
6
7
result = course.isalpha() # tüm karakterler alfabetik mi diye sorar ve False gelir.
result = 'Hello'.isalpha() # tüm karakterler alfabetik olduğundan True gelir.
result = course.isdigit() # tüm karakterler rakam mı diye sorar ve False gelir.
result = '123'.isdigit() # tüm karakterler rakam mı diye sorar ve True gelir.
8- ‘Contents’ ifadesini satırda 50 karakter içine yerleştirip sağ ve soluna * ekleyiniz.
1
2
3
4
5
result = 'Contents'.center(50, '*') # **** Contents **** şeklinde toplam 50 karakter olur.
result = 'Contents'.ljust(50, '*') # Contents ********* şeklinde toplam 50 karakter olur.
result = 'Contents'.rjust(50, '*') # ********* Contents şeklinde toplam 50 karakter olur.
9- ‘course’ karakter dizisindeki tüm boşluk karakterlerini ‘-‘ ile değiştirin.
1
2
3
4
5
result = course.replace(' ', '-') # tüm boşluk karakterleri '-' ile değiştirilir.
result = course.replace(' ', '-',5) # ilk 5 boşluk karakterleri '-' ile değiştirilir.
result = course.replace(' ', '') # tüm boşluk karakteri silinir.
10- ‘Hello World’ karakter dizisinin ‘World’ ifadesini ‘There’ olarak değiştirin
1
result = 'Hello World'.replace('World','There')
11- ‘course’ karakter dizisini boşluk karakterlerinden ayırın.
1
2
3
4
5
6
7
result = course.split(' ') # ['Python', 'Kursu:', 'Baştan', 'Sona', 'Python', 'Programlama', 'Rehberiniz', '(40', 'saat)']
result = result[2] # 'Baştan'
result = result[5] # 'Programlama'
split metodu ile string ifadeyi her boşluk karakterinden ayırıp bir listeye çevirmiş oluruz ve her bir liste elemanına indeks numarası ile ulaşabiliriz.