Bu yazıda Python’da dizeleri(string) oluşturmayı, biçimlendirmeyi, değiştirmeyi ve silmeyi öğreneceksiniz. Ayrıca, çeşitli dizgi işlemleri ve işlevleri ile tanışacaksınız.
Python’da String nedir?
Bir dize, bir karakter dizisidir.
Bir karakter sadece bir semboldür. Örneğin, Türkçe dili 29 karaktere sahiptir.
Bilgisayarlar karakterlerle ilgilenmezler, sayılarla (ikili) ilgilenirler. Ekranınızda karakterler görebilseniz bile, dahili olarak 0’lar ve 1’lerin bir kombinasyonu olarak depolanır ve işlenir.
Karakterin bu sayıya dönüştürülmesi kodlama olarak adlandırılır ve ters işlem kod çözme işlemidir. ASCII ve Unicode, kullanılan popüler kodlamalardan bazılarıdır.
Python’da bir dize, bir Unicode karakter dizisidir. Unicode, tüm dillerdeki her karakteri dahil etmek ve kodlamada tekdüzelik getirmek için tanıtıldı. Python Unicode‘dan Unicode hakkında bilgi edinebilirsiniz.
Python’da bir String nasıl oluşturulur?
Stringler, karakterleri tek tırnak veya çift tırnak içine alarak oluşturulabilir. Python’da üçlü tırnaklar bile kullanılabilir, ancak genellikle çok satırlı dizeleri ve dokümanları temsil etmek için kullanılır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | ornek = 'Merhaba' print(ornek) ornek = "Merhaba" print(ornek) ornek = '''Merhaba''' print(ornek) ornek = """Merhaba Python Dünyasına Hoşgeldiniz.""" print(ornek) |
Çıktı:
1 2 3 4 5 6 7 | Merhaba Merhaba Merhaba Merhaba Python Dünyasına Hoşgeldiniz. |
Bir dizedeki karakterlere nasıl erişilir?
İndekslemeyi kullanarak tek tek karakterlere ve dilimlemeyi kullanarak bir dizi karaktere erişebiliriz. Dizin, 0‘dan başlar. Dizin aralığı dışındaki bir karaktere erişmeye çalışmak bir IndexError hatası oluşturacaktır. Dizin bir int olmalıdır. Float veya diğer türleri kullanamayız, bu TypeError ile sonuçlanacaktır.
Python, dizileri için negatif indekslemeye izin verir.
-1 dizini son öğeye, -2 ikinci son öğeye ve bu böyle devam eder. Dilimleme operatörünü (kolon) kullanarak bir dizedeki bir dizi öğeye erişebiliriz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #Python'da String karakterlere erişim str = 'tasarimkodlama' print('str = ', str) #ilk karakter print('str[0] = ', str[0]) #son karakter print('str[-1] = ', str[-1]) #2den 5e kadar olan karakterleri alma print('str[1:5] = ', str[1:5]) #altıdan, sondan ikinci karaktere kadar alma print('str[5:-2] = ', str[5:-2]) |
Çıktı:
1 2 3 4 5 6 7 | str = tasarimkodlama str[0] = t str[-1] = a str[1:5] = asar str[5:-2] = imkodla |
Aralık dışındaki bir dizine erişmeye çalışırsak veya tam sayı dışında sayılar kullanırsak, hata alırız.
1 2 3 4 5 6 7 8 9 10 11 12 | # iindex aralıkta olmalı ornek="merhaba dünya" >>> ornek[15] ... IndexError: string index out of range # index tam sayı olmalı >>> ornek[1.5] ... TypeError: string indices must be integers |
Bir dizi nasıl değiştirilir veya silinir?
Dizeler değişmezdir. Bu, bir dizenin elemanlarının atandıktan sonra değiştirilemeyeceği anlamına gelir. Farklı dizeleri aynı isme yeniden atayabiliriz.
1 2 3 4 5 6 7 8 9 | >>> ornek = 'tasarim' >>> ornek[5] = 'a' ... TypeError: 'str' object does not support item assignment >>> ornek = 'Python' >>> ornek 'Python' |
Bir dizeden karakterleri silemeyiz veya kaldıramayız. Ancak dizeyi tamamen silmek, del anahtar sözcüğünü kullanarak mümkündür.
1 2 3 4 5 6 7 8 9 | >>> del ornek[1] ... TypeError: 'str' object doesn't support item deletion >>> del ornek >>> ornek ... NameError: name 'ornek' is not defined |
Python String İşlemleri
Python’da en çok kullanılan veri türlerinden biri yapan dizelerle gerçekleştirilebilen birçok işlem vardır.
Python’da bulunan veri türleri hakkında daha fazla bilgi edinmek için şu adresi ziyaret edin: Python Veri Türleri
İki veya Daha Fazla Dizenin Birleştirilmesi
İki veya daha fazla dizenin tek bir dizide birleştirilmesine bitiştirme denir.
+ Operatörü bunu Python’da yapar. Basitçe iki dize değişmezini birleştirir.
* Operatörü, dizeyi belirli sayıda tekrarlamak için kullanılabilir.
1 2 3 4 5 6 7 8 9 10 11 | # Python String İşlemleri str1 = 'Merhaba' str2 ='Dünya!' # + kullanarak print('str1 + str2 = ', str1 + str2) # * kullanarak print('str1 * 3 =', str1 * 3) |
Yukarıdaki programı çalıştırdığımızda aşağıdaki çıktıyı alıyoruz:
1 2 3 4 | str1 + str2 = MerhabaDünya! str1 * 3 = MerhabaMerhabaMerhaba |
İki dize değişmezini birlikte yazmak onları + operatörü gibi birleştirir.
Dizeleri farklı satırlarda birleştirmek istersek parantez kullanabiliriz.
1 2 3 4 5 6 7 8 9 10 11 | >>> # iki dize değişmezi birlikte >>> 'Merhaba ''Dünya!' 'Merhaba Dünya!' >>> # parantez kullanarak >>> s = ('Merhaba ' ... 'Dünya') >>> s 'Merhaba Dünya' |
Bir String’de Hareket Etme
for loop kullanarak bir dizeyi yineleyebiliriz. İşte bir dizedeki ‘a’ların sayısını saymak için bir örnek.
1 2 3 4 5 6 7 8 | # string üzerinde hareket etme adet = 0 for metin in 'Merhaba Dünya': if(metin == 'a'): adet += 1 print(adet,' tane harf bulundu') |
Yukarıdaki kod çalıştırıldığında aşağıdaki ekran çıktısı alınır.
1 2 3 | 3 tane harf bulundu |
String Üyelik Testi
in anahtar kelimesini kullanarak bir dizede başka bir dizenin var olup olmadığını test edebiliriz.
1 2 3 4 5 6 | >>> 'a' in 'program' True >>> 'bal' not in 'balta' False |
Python’da Yerleşik Fonksiyonlar ile Çalışma
Sırayla çalışan çeşitli yerleşik işlevler dizelerle de çalışır.
Yaygın olarak kullanılanlardan bazıları enumerate() ve len() ‘dir. Enumerate() işlevi bir numaralandırma nesnesi döndürür. Dizedeki tüm öğelerin dizinini ve değerini çiftler halinde içerir. Bu, yineleme için yararlı olabilir.
İlginizi çekebilir: Python str() Kullanımı
Benzer şekilde len(), dizenin uzunluğunu (karakter sayısını) döndürür.
1 2 3 4 5 6 7 8 9 10 | str = 'merhaba' # enumerate() list_enumerate = list(enumerate(str)) print('list(enumerate(str) = ', list_enumerate) #karakter sayısı print('len(str) = ', len(str)) |
Yukarıdaki kodun ekran çıktısı şöyle olacaktır.
1 2 3 4 | list(enumerate(str) = [(0, 'm'), (1, 'e'), (2, 'r'), (3, 'h'), (4, 'a'), (5, 'b'), (6, 'a')] len(str) = 7 |
Python String Formatlama
Kaçış Karakteri (Escape Karakter)
Eğer “Ali’bin kalemi var mı?” gibi bir metin yazmak istersek ne çift tırnak ne de tek tırnak çalışmayacaktır. Hem çift hem de tek tırnak için SyntaxError
hatası alırız.
1 2 3 4 5 6 7 8 | >>> print("O dedi ki, "Ali'bin kalemi var mı?"") ... SyntaxError: invalid syntax >>> print('O dedi ki, "Ali'bin kalemi var mı?"') ... SyntaxError: invalid syntax |
Bu sorunu aşmanın bir yolu, üçlü tırnak kullanmaktır. Alternatif olarak, kaçış dizilerini kullanabiliriz.
Bir kaçış dizisi ters eğik çizgiyle başlar ve farklı şekilde yorumlanır. Bir dizgeyi temsil etmek için tek bir alıntı kullanırsak, dizedeki tüm tek tırnakların öncelenmesi gerekir. Çift tırnak için de durum benzerdir. Yukarıdaki metni temsil etmek için nasıl yapılabileceği aşağıda açıklanmıştır.
1 2 3 4 5 6 7 8 9 10 | # üçlü tırnak kullanma print('''O dedi ki, "Ali'bin kalemi var mı?"''') # kaçış karakteri kullanma print('O dedi ki, "Ali\'bin kalemi var mı?"') # çift kaçış karakteri kullanma print("O dedi ki, \"Ali'bin kalemi var mı?\"") |
Yukarıdaki programı çalıştırdığımızda aşağıdaki çıktıyı alıyoruz:
1 2 3 4 5 | O dedi ki, "Ali'bin kalemi var mı?" O dedi ki, "Ali'bin kalemi var mı?" O dedi ki, "Ali'bin kalemi var mı?" |
İşte Python tarafından desteklenen tüm kaçış dizilerinin bir listesi.
Escape Karakter | Tanım |
---|---|
\yenisatır | Ters eğik çizgi ve satırsonu yok sayılır |
\\ | Ters eğik çizgi |
\’ | Tek tırnak |
\” | Çift tırnak |
\a | ASCII Bell |
\b | ASCII Backspace |
\f | ASCII Form besleme |
\n | ASCII Satır besleme |
\r | ASCII Satırbaşı |
\t | ASCII Yatay sekme |
\v | ASCII Dikey Sekme |
\ooo | Oktal değer ile karakter 000 |
\xHH | Hexadecimal değer ile karakter HH |
İşte bazı örnekler
1 2 3 4 5 6 7 8 9 10 11 | >>> print("C:\\Python32\\Lib") C:\Python32\Lib >>> print("Bu yazı \niki satırda yazıldı") Bu yazı iki satırda yazıldı >>> print("Bu \x48\x45\x58 temsilidir") Bu HEX temsilidir |
Kaçış Karakterini Yok Saycak Ham Dize
Bazen bir dizge içindeki kaçış dizilerini görmezden gelmek isteyebiliriz. Bunu yapmak için dizenin önüne r veya R yerleştirebiliriz. Bu, onun bir ham dizge olduğunu ve içindeki herhangi bir kaçış dizisinin yok sayılacağını ima edecektir.
1 2 3 4 5 6 7 | >>> print("Bu \x61 \niyi bir örnek") Bu iyi bir örnek >>> print(r"Bu \x61 \niyi bir örnek") Bu \x61 \niyi bir örnek |
Format() ile Dizeleri Biçimlendirme Yöntemi
String nesnesiyle kullanılabilen format() yöntemi çok yönlüdür ve dizeleri formatlamada güçlüdür. Biçim dizeleri, yer tutucular olarak kaşlı ayraçlar veya değiştirilen değiştirme alanları {} içerir.
Sırayı belirtmek için konumsal argümanlar veya anahtar kelime argümanları kullanabiliriz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | # Python string format() metodu # varsayılan (örtük) düzen varsayilan_sira = "{}, {} ve {}".format('Ahmet','Hayri','Mustafa') print('\n--- varsayilan sıra ---') print(varsayilan_sira) # konumsal argüman kullanarak sıralama konumsal_sira = "{1}, {0} ve {2}".format('Ahmet','Hayri','Mustafa') print('\n--- konumsal sıra ---') print(konumsal_sira) # anahtar kelime argümanı kullanarak sıralama anahtar_sira = "{b}, {d} ve {c}".format(d='Ahmet',b='Hayri',c='Mustafa') print('\n--- Anahtar Sıra ---') print(anahtar_sira) |
Kodlar çalıştırıldığında aşağıdaki gibi bir ekran çıktısı oluşacaktır.
1 2 3 4 5 6 7 8 9 10 | --- varsayilan sıra --- Ahmet, Hayri ve Mustafa --- konumsal sıra --- Hayri, Ahmet ve Mustafa --- Anahtar Sıra --- Hayri, Ahmet ve Mustafa |
format() yöntemi isteğe bağlı biçim özelliklerine sahip olabilir. Alan adından iki nokta üst üste kullanılarak ayrılırlar. Örneğin, verilen boşlukta bir dizgeyi <, sağa yaslama> veya ortada ^ hizalayabiliriz.
Tam sayıları ikili, onaltılık vb. olarak da biçimlendirebiliriz ve yüzer sayılar üs biçiminde yuvarlanabilir veya görüntülenebilir. Kullanabileceğiniz tonlarca biçimlendirme var .
format() yöntemiyle kullanılabilen tüm dize biçimlendirmeleri için burayı ziyaret edin.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | >>> # tam sayıları biçimlendirme >>> "Onluk :{0} İkilik :{0:b}".format(12) 'Onluk :12 İkilik :1100' >>> # ondalıklı sayıları biçimlendirme >>> "Exponent Biçimi : {0:e}".format(1566.345) 'Exponent Biçimi : 1.566345e+03' >>> # yuvarlama >>> "3 Basamak Yuvarla : {0:.3f}".format(1/3) '3 Basamak Yuvarla : 0.333' >>> # string hizalama >>> "|{:<10}|{:^10}|{:>10}|".format('ekmek','Yağ','Peynir') '|ekmek | Yağ | Peynir|' |
Eski stil biçimlendirme
C programlama dilinde kullanılan eski sprintf() stili gibi dizeleri bile biçimlendirebiliriz. Bunu başarmak için % operatörünü kullanıyoruz.
1 2 3 4 5 6 7 | >>> x = 12.3456789 >>> print('Çıktı: %3.2f' %x) Çıktı: 12.35 >>> print('Çıktı: %3.4f' %x) Çıktı: 12.3457 |
Yaygın Python Dizesi Yöntemleri
String nesnesi ile kullanılabilen çok sayıda yöntem vardır. Yukarıda bahsettiğimiz format() yöntemi bunlardan biridir. Yaygın olarak kullanılan yöntemlerden bazıları lower(), upper(), join(), split(), find(), replace() vb.
3 Yorum