Python’da String Tipi
Bu eğitimde Python’da dizeler oluşturmayı, biçimlendirmeyi, değiştirmeyi ve silmeyi öğreneceksiniz. Ayrıca, çeşitli dize işlemleri ve işlevleriyle tanışacaksınız.
Python’da String nedir?
Bir dize, bir karakter dizisidir.
Bir karakter sadece bir semboldür. Örneğin, İngilizce dilinde 26 karakter vardır.
Bilgisayarlar karakterlerle ilgilenmezler, sayılarla (ikili) ilgilenirler. Ekranınızda karakterler görseniz bile, dahili olarak 0’lar ve 1’ler kombinasyonu olarak saklanır ve işlenir.
Bu karakterin bir sayıya dönüştürülmesine kodlama denir ve bunun tersi işlem kod çözmedir. ASCII ve Unicode, kullanılan popüler kodlamalardan bazılarıdır.
Python’da bir dize, bir Unicode karakter dizisidir. Unicode, her karakteri tüm dillere dahil etmek ve kodlamada tekdüzelik sağlamak için tanıtıldı. Unicode’u Python Unicode’dan öğrenebilirsiniz .
Python’da bir dize nasıl oluşturulur?
Dizeler, karakterleri tek bir alıntı veya çift tırnak içine alarak oluşturulabilir. Python’da üçlü tırnak işaretleri bile kullanılabilir, ancak genellikle çok satırlı dizeleri ve belge dizilerini temsil etmek için kullanılır.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # defining strings in Python # all of the following are equivalent my_string = 'Hello' print(my_string) my_string = "Hello" print(my_string) my_string = '''Hello''' print(my_string) # triple quotes string can extend multiple lines my_string = """Hello, welcome to the world of Python""" print(my_string) |
Programı çalıştırdığınızda çıktısı şöyle olacaktır:
1 2 3 4 5 | <samp>Merhaba Merhaba Merhaba Merhaba hoşgeldiniz Python dünyası</samp> |
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
. Dizin bir tamsayı olmalıdır. Şamandıraları veya diğer türleri kullanamayız, bu TypeError
.
Python, dizileri için negatif indekslemeye izin verir.
İndeksi -1
, son öğeye, -2
ikinci son öğeye vb. :
Dilimleme operatörünü (kolon) kullanarak bir dizideki bir dizi öğeye erişebiliriz .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #Accessing string characters in Python str = 'programiz' print('str = ', str) #first character print('str[0] = ', str[0]) #last character print('str[-1] = ', str[-1]) #slicing 2nd to 5th character print('str[1:5] = ', str[1:5]) #slicing 6th to 2nd last character print('str[5:-2] = ', str[5:-2]) |
Yukarıdaki programı çalıştırdığımızda aşağıdaki çıktıyı alıyoruz:
1 2 3 4 5 | <samp>str = programla str[0] = p str[-1] = z str[1:5] = doğru str[5:-2] = sabah</samp> |
Aralık dışındaki bir dizine erişmeye çalışırsak veya bir tamsayı dışında sayılar kullanırsak hata alırız.
1 2 3 4 5 6 7 8 9 | # index must be in range >>> my_string[15] ... IndexError: string index out of range # index must be an integer >>> my_string[1.5] ... TypeError: string indices must be integers |
Dilimleme, indeksin aşağıda gösterildiği gibi öğeler arasında olduğu düşünülerek en iyi şekilde görselleştirilebilir.
Bir aralığa erişmek istiyorsak, diziden bölümü kesecek dizine ihtiyacımız var.

Bir dize nasıl değiştirilir veya silinir?
Dizeler değişmezdir. Bu, bir dizenin öğeleri atandıktan sonra değiştirilemeyeceği anlamına gelir. Farklı dizeleri aynı ada kolayca yeniden atayabiliriz.
1 2 3 4 5 6 7 | >>> my_string = 'programiz' >>> my_string[5] = 'a' ... TypeError: 'str' object does not support item assignment >>> my_string = 'Python' >>> my_string 'Python' |
Bir dizeden karakterleri silemez veya kaldıramayız. Ancak, anahtar kelimeyi kullanarak dizeyi tamamen silmek mümkündür del
.
1 2 3 4 5 6 7 | >>> del my_string[1] ... TypeError: 'str' object doesn't support item deletion >>> del my_string >>> my_string ... NameError: name 'my_string' is not defined |
Python Dizisi İşlemleri
Python’da onu en çok kullanılan veri türlerinden biri yapan dizelerle gerçekleştirilebilecek 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 dizgenin tek bir dizgede birleştirilmesine birleştirme denir.
+ operatörü bunu Python’da yapar . Basitçe iki dize değişmezini birlikte yazmak da onları birleştirir.
* operatörü , dizeyi belirli bir sayıda tekrarlamak için kullanılabilir.
1 2 3 4 5 6 7 8 9 | # Python String Operations str1 = 'Hello' str2 ='World!' # using + print('str1 + str2 = ', str1 + str2) # using * print('str1 * 3 =', str1 * 3) |
Yukarıdaki programı çalıştırdığımızda aşağıdaki çıktıyı alıyoruz:
1 2 | <samp>str1 + str2 = MerhabaDünya! str1 * 3 = MerhabaMerhabaMerhaba</samp> |
İki dize değişmezini birlikte yazmak, onları + operatörü gibi birleştirir.
Dizeleri farklı satırlarda birleştirmek istiyorsak parantez kullanabiliriz.
1 2 3 4 5 6 7 8 9 | >>> # two string literals together >>> 'Hello ''World!' 'Hello World!' >>> # using parentheses >>> s = ('Hello ' ... 'World') >>> s 'Hello World' |
Bir dize aracılığıyla yineleme
Bir for döngüsü kullanarak bir dizgeyi yineleyebiliriz . İşte bir dizgedeki ‘l’lerin sayısını saymak için bir örnek.
1 2 3 4 5 6 | # Iterating through a string count = 0 for letter in 'Hello World': if(letter == 'l'): count += 1 print(count,'letters found') |
Yukarıdaki programı çalıştırdığımızda aşağıdaki çıktıyı alıyoruz:
1 | <samp>3 harf bulundu</samp> |
Dizi Üyelik Testi
Bir dizgenin içinde bir alt dizginin olup olmadığını, anahtar kelimeyi kullanarak test edebiliriz in
.
1 2 3 4 | >>> 'a' in 'program' True >>> 'at' not in 'battle' False |
Python ile çalışmak için yerleşik işlevler
Sırayla çalışan çeşitli yerleşik işlevler, dizelerle de çalışır.
Yaygın olarak kullanılanlardan bazıları enumerate()
ve len()
. İşlev enumerate()
, bir numaralandırma nesnesi döndürür. Dizedeki tüm öğelerin çiftler olarak indeksini ve değerini içerir. Bu yineleme için yararlı olabilir.
Benzer şekilde, len()
dizenin uzunluğunu (karakter sayısını) döndürür.
1 2 3 4 5 6 7 8 | str = 'cold' # enumerate() list_enumerate = list(enumerate(str)) print('list(enumerate(str) = ', list_enumerate) #character count print('len(str) = ', len(str)) |
Yukarıdaki programı çalıştırdığımızda aşağıdaki çıktıyı alıyoruz:
1 2 | <samp>list(enumerate(str) = [(0, 'c'), (1, 'o'), (2, 'l'), (3, 'd')] uzunluk(str) = 4</samp> |
Python Dize Biçimlendirme
Kaçış dizisi
gibi bir metin yazdırmak istiyorsak“Orada ne var?” dedi., ne tek tırnak ne de çift tırnak kullanamayız. Bu SyntaxError
, metnin kendisi hem tek hem de çift tırnak içerdiğinden a ile sonuçlanacaktır.
1 2 3 4 5 6 | >>> print("He said, "What's there?"") ... SyntaxError: invalid syntax >>> print('He said, "What's there?"') ... 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 çizgi ile başlar ve farklı yorumlanır. Bir dizeyi temsil etmek için tek bir alıntı kullanırsak, dize içindeki tüm tek tırnaklardan kaçılmalıdır. Çift tırnak için de benzer bir durum söz konusudur. Yukarıdaki metni temsil etmenin nasıl yapılabileceği aşağıda açıklanmıştır.
1 2 3 4 5 6 7 8 | # using triple quotes print('''He said, "What's there?"''') # escaping single quotes print('He said, "What\'s there?"') # escaping double quotes print("He said, \"What's there?\"") |
Yukarıdaki programı çalıştırdığımızda aşağıdaki çıktıyı alıyoruz:
1 2 3 | <samp>"Orada ne var?" dedi. "Orada ne var?" dedi. "Orada ne var?" dedi.</samp> |
Python tarafından desteklenen tüm kaçış dizilerinin bir listesi.
Kaçış dizisi | Tanım |
---|---|
\Yeni hat | Ters eğik çizgi ve yeni satır yoksayıldı |
\\ | ters eğik çizgi |
\’ | Tek alıntı |
\” | çift alıntı |
\a | ASCII Çanı |
\b | ASCII Geri Alımı |
\f | ASCII Form Beslemesi |
\n | ASCII Satır Besleme |
\r | ASCII Satır Başı |
\t | ASCII Yatay Sekmesi |
\v | ASCII Dikey Sekmesi |
\oooo | Sekizlik değeri olan karakter ooo |
\xHH | Onaltılık değeri HH olan karakter |
İşte bazı örnekler
1 2 3 4 5 6 7 8 9 | >>> print("C:\\Python32\\Lib") C:\Python32\Lib >>> print("This is printed\nin two lines") This is printed in two lines >>> print("This is \x48\x45\x58 representation") This is HEX representation |
Kaçış sırasını yoksaymak için Ham Dize
Bazen bir dizgenin içindeki kaçış dizilerini yok saymak isteyebiliriz. Bunu yapmak için dizenin önüne r
veya önüne yerleştirebiliriz. R
Bu, ham bir dize olduğu anlamına gelir ve içindeki herhangi bir kaçış dizisi yoksayılır.
1 2 3 4 5 | >>> print("This is \x61 \ngood example") This is a good example >>> print(r"This is \x61 \ngood example") This is \x61 \ngood example |
Dizeleri Biçimlendirmek için format() Yöntemi
Dize nesnesiyle kullanılabilen format()
yöntem, dizeleri biçimlendirmede çok yönlü ve güçlüdür. {}
Biçim dizeleri, yer tutucular veya değiştirilen değiştirme alanları olarak küme parantezleri içerir .
Sırayı belirtmek için konum argümanlarını veya anahtar kelime argümanlarını kullanabiliriz.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | # Python string format() method # default(implicit) order default_order = "{}, {} and {}".format('John','Bill','Sean') print('\n--- Default Order ---') print(default_order) # order using positional argument positional_order = "{1}, {0} and {2}".format('John','Bill','Sean') print('\n--- Positional Order ---') print(positional_order) # order using keyword argument keyword_order = "{s}, {b} and {j}".format(j='John',b='Bill',s='Sean') print('\n--- Keyword Order ---') print(keyword_order) |
Yukarıdaki programı çalıştırdığımızda aşağıdaki çıktıyı alıyoruz:
1 2 3 4 5 6 7 8 | <samp>--- Varsayılan Sıra --- John, Bill ve Sean --- Konumsal Sıra --- Bill, John ve Sean --- Anahtar Kelime Sıralaması --- Sean, Bill ve John</samp> |
Yöntem format()
, isteğe bağlı biçim özelliklerine sahip olabilir. İki nokta üst üste kullanılarak alan adından ayrılırlar. Örneğin, verilen boşlukta bir dizeyi sola yaslayabilir <
, sağa yaslayabilir >
veya ortalayabiliriz .^
Tamsayıları ikili, onaltılık vb. olarak da biçimlendirebiliriz ve kayan değerler yuvarlanabilir veya üs biçiminde görüntülenebilir. Kullanabileceğiniz tonlarca biçimlendirme var. Yöntemle kullanılabilen tüm dize biçimlendirmeleri için burayı ziyaret edin format()
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | >>> # formatting integers >>> "Binary representation of {0} is {0:b}".format(12) 'Binary representation of 12 is 1100' >>> # formatting floats >>> "Exponent representation: {0:e}".format(1566.345) 'Exponent representation: 1.566345e+03' >>> # round off >>> "One third is: {0:.3f}".format(1/3) 'One third is: 0.333' >>> # string alignment >>> "|{:<10}|{:^10}|{:>10}|".format('butter','bread','ham') '|butter | bread | ham|' |
Eski stil biçimlendirme
sprintf()
Hatta C programlama dilinde kullanılan eski stil gibi dizeleri biçimlendirebiliriz . Bunu %
gerçekleştirmek için operatörü kullanıyoruz.
1 2 3 4 5 | >>> x = 12.3456789 >>> print('The value of x is %3.2f' %x) The value of x is 12.35 >>> print('The value of x is %3.4f' %x) The value of x is 12.3457 |
Ortak Python Dizisi Yöntemleri
String nesnesiyle kullanılabilen çok sayıda yöntem vardır. Yukarıda format()
bahsettiğimiz yöntem de bunlardan biridir. Yaygın olarak kullanılan yöntemlerden bazıları lower()
, upper()
, join()
, split()
, find()
vs.’dir . İşte Python’da dizelerle çalışmak içinreplace()
tüm yerleşik yöntemlerin tam listesi .
1 2 3 4 5 6 7 8 9 10 11 12 | >>> "PrOgRaMiZ".lower() 'programiz' >>> "PrOgRaMiZ".upper() 'PROGRAMIZ' >>> "This will split all words into a list".split() ['This', 'will', 'split', 'all', 'words', 'into', 'a', 'list'] >>> ' '.join(['This', 'will', 'join', 'all', 'words', 'into', 'a', 'string']) 'This will join all words into a string' >>> 'Happy New Year'.find('ew') 7 >>> 'Happy New Year'.replace('Happy','Brilliant') 'Brilliant New Year' |