1373

Python Dersleri: Baştan Sona Python Programlama Eğitimi

Python Karakter Dizileri: Strings

Pythonda karakter dizileri nedir ve nasıl kullanılır?



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.

Örnek

"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.

Örnek

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.

Örnek

name = 'Sadık'
surname = 'Turan'
age = 36

greeting = 'My name is '+ name + ' '+ surname + ' and \nI am '+ str(age) + ' years old.'
print(greeting)  # My name is Sadık turan and I am 36 years old.

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

name = 'Çınar'
surname = 'Turan'
age = 36

.format() metoduna vereceğimiz her parametre sırasıyla { }' lerin yerine kopyalanır. 

print('My name is {} {}'.format(name, surname)) # My name is Çınar Turan

Gördüğünüz gibi birinci { }' in yerine Çınar ikinci { }' in yerine ise Turan yazdırılır.

print('My name is {1} {0}'.format(name, surname))  # My name is Turan Çınar 

{ }' ler için indeks numarası da verebiliriz. Yani format metodu içindeki name, 0 ve surname, 1 değerlerini alır. 

print('My name is {s} {n}'.format(n=name, s=surname))  # My name is Turan Çınar 

format() metodu içindeki değişkenlere takma isim de verebiliriz.

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.

print("My name is {} {} and I'm {} years old.".format(name, name, name)) # My name is Çınar Çınar Çınar 

forma 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.

print("My name is {0} {0} and I'm {0} years old.".format(name)) # My name is Çınar Çınar Çınar 

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.

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.

Örnek

result = greeting[0] 
print(result)  # M    

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.

Örnek

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.

Örnek

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.

Örnek

result = len(greeting)
print(result)  # 44

Dolayısıyla son elemanın indeks numarası toplam karakter sayısından 1 eksik olur. 

Örnek

result = greeting[len(greeting)-1] 
print(result)  # .

Bir karakter dizisini başlangıç ve bitiş aralığında istediğimiz şekilde bölebiliriz.

Örnek

result = greeting[3:7] 
print(result)  # name

Örnek

3. indeksden başlayarak 7. indekse kadar olan karakterleri alıyoruz. Son indeks işin içine katılmıyor.

Örnek

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.

Örnek

result = greeting[3:] 
print(result)  # name is Çınar Turan and I'm 25 years old.

Örnek

Burada ise başlangıç indeksi 3 ve bitiş indeksi belirtilmediğinden dolayı en sona kadar alınır.

result = greeting[0:10:2]
print(result) # M aei

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.

Örnek

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.

Örnek

result = greeting[::-1]
print(result)   # .dlo sraey 52 m'I dna naruT ranıÇ si eman yM

Python String Uygulamaları

website = "http://www.sadikturan.com"
course = "Python Kursu: Baştan Sona Python Programlama Rehberiniz (40 saat)"

1- 'course' karakter dizisinde kaç karakter bulunmaktadır ?

length = len(course)
length = len(website)

2- 'website' içinden www karakterlerini alın.

result = website[7:10]

3- 'website' içinden com karakterlerini alın.

result = website[22:25]
result = website[length-3:length]

4- 'course' içinden ilk 15 ve son 15 karakterlerini alın.

result = course[0:15]
result = course[:15]
result = course[-15:]

5- 'course' ifadesindeki karakterleri tersten yazdırın.

result = course[::-1]
name, surname, age, job = 'Bora','Yılmaz', 32, 'mühendis'

6- Yukarıda verilen değişkenler ile ekrana aşağıdaki ifadeyi yazdırın.

'Benim adım Bora Yılmaz, Yaşım 32 ve mesleğim mühendis.'

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}.'

7- 'Hello world' ifadesindeki w harfini 'W' ile değiştirin.

s = 'Hello world'
s = s[0:6] + 'W'+ s[-4:]

8- 'abc' ifadesini yan yana 3 defa yazdırın.

result = 'abc ' * 3