Sitelet https://www.datacamp.com/tr/tutorial/python-string-tutorial
Ana içeriğe atla

Python String Eğitimi

Bu eğitimde Python String'leri hakkında her şeyi öğreneceksiniz: dilimleme ve adımlama, Formatter sınıfı, f-string'ler, şablonlar ve daha fazlasıyla string'leri değiştirme ve biçimlendirme!
Güncel 3 Eki 2026  · 10 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

String; harflerin, kelimelerin veya diğer karakterlerin bir koleksiyonudur. İlkel veri yapılarından biridir ve veri işleme için yapı taşlarıdır. Python'da str adlı yerleşik bir string sınıfı vardır. Python string'leri "değiştirilemez"dir; yani oluşturulduktan sonra değiştirilemezler. String işlemede, değiştirilemez özelliklerinden dolayı hesaplanan değerleri temsil etmek için ilerledikçe yeni string'ler oluştururuz.

Bu eğitimde string'leri derinlemesine inceleyecek ve aşağıdaki konuları ele alacaksınız:

string python eğitimi

Python'da veri yapıları hakkında daha fazla öğrenmek ilginizi çekiyorsa, DataCamp'in iki bölümlük Python Data Science Toolbox kursuna mutlaka göz atın. Bu kurs; fonksiyonlar, yineliyiciler, listeler vb. konularına daha derinlemesine iner.

String'ler

Python'da metinsel veriyi str nesnesiyle işleyebilirsiniz. String'ler Unicode'un değiştirilemez sıralarıdır. Unicode, dillerdeki tüm karakterleri temsil etmek için tasarlanmış bir sistemdir. Unicode'da her harf, karakter 4 baytlık bir sayı olarak temsil edilir. Her sayı benzersiz bir karakteri ifade eder.

Bir string'i temsil etmek için onu tırnak içine alırsınız. Bunu yapmanın birden fazla yolu vardır:

  • Tek tırnak, şu örnekte olduğu gibi: 'Tek tırnak, string'inize "çift" tırnak yerleştirmenize imkân tanır.'
  • Çift tırnak. Örneğin: "Çift tırnak, string'inize 'tek' tırnak yerleştirmenize imkân tanır."
  • Üç tırnak, şu örnekte olduğu gibi: """Çift tırnakla üç tırnak""", '''Tek tırnakla üç tırnak.'''

Üç tırnaklı string'ler birden çok satırlı string'lerle çalışmanıza olanak tanır ve ilişkili tüm boşluk karakterleri string'e dahil edilir.

single_quote = 'Single quote allow you to embed "double" quotes in your string.'
double_quote = "Double quote allow you to embed 'single' quotes in your string."
triple_quote = """Triple quotes allows to embed "double quotes" as well as 'single quotes' in your string. 
And can also span across multiple lines."""

String'ler değiştirilemezdir; yani bir string içinde herhangi bir değeri değiştirmeye çalışırsanız hata alırsınız. Değişiklikleri uygulamak için yeni bir string oluşturmanız gerekir.

triple_quote = '''This is triple quoted string using "single" quotes.'''
triple_quote[35] = "'"
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-207-62d335428dcf> in <module>()
      1 triple_quote = '''This is triple quoted string using "single" quotes.'''
----> 2 triple_quote[35] = "'"


TypeError: 'str' object does not support item assignment
triple_quote_new = triple_quote[0:35] + "'single'" + triple_quote[43:]
print(triple_quote_new)
This is triple quoted string using 'single' quotes.

Bir string'in uzunluğunu yerleşik len() fonksiyonunu kullanarak bulabilirsiniz:

len(triple_quote_new)
51

Python'ı Ücretsiz Öğrenmeye Başlayın

Python’a Giriş

BasicSkill Level
4 sa
7.1M learners
Python ile veri analizi temellerini sadece dört saatte öğrenin. Bu çevrimiçi kurs, Python arayüzünü tanıtacak ve popüler paketleri keşfedecektir.
See DetailsRight Arrow
Start Course

Python'da String Dilimleme

String'ler bir karakter dizisi olduğundan, tıpkı Python listeleri veya demetlerinde olduğu gibi dilimleme ve indeksleme ile erişebilirsiniz. String'ler, string içindeki her karaktere göre indekslenir ve indeksleme 0'dan başlar:

python string eğitimi

Yukarıdaki string'de ilk indeks C'dir ve 0 olarak indekslenmiştir. Son karakter bir nokta .'dır ve string'in 16. karakteridir. Karakterlere -1'den başlayarak ters yönde de erişebilirsiniz; bu, string'deki .'a erişmek için -1'i indeks değeri olarak kullanabileceğiniz anlamına gelir. Chocolate ve cookie arasında bir boşluk da vardır; bu da string'in bir parçasıdır ve bu örnekte 9. indeks olmak üzere kendi indeksine sahiptir. Bunu dilimlemeyle kontrol edebilirsiniz.

Python string'indeki her karakterin karşılık gelen bir indeks numarası olduğundan, string'lere diğer sıralı veri tiplerinde olduğu gibi erişebilir ve onları işleyebilirsiniz. Dilimleme, Python'da bir kapsayıcı nesneden indeks değerlerini kullanarak belirli bir öğeyi veya alt kümesini seçmenizi sağlayan bir tekniktir. Dilimleme, belirli alt string'leri bulmak veya onlara erişmek için string'inizin indeksleri arasında döngü yazma zahmetinden sizi kurtarır.

snack = "Chocolate cookie."
print(snack[0])
print(snack[9])
print(snack[-1])
C

.

Diyelim ki aşağıdaki string'den 'cookie' alt string'ini çıkarmak istiyorsunuz. Bunu nasıl yapardınız?

Böyle durumlarda aralık dilimlemeyi kullanırsınız.

Aralık dilimlemenin söz dizimi şöyledir: [Başlangıç indeksi (dahil): Bitiş indeksi (hariç)]

snack = "Chocolate cookie."
print(snack[10:16])
cookie

Bunu, bitiş indeksi için negatif değer kullanarak da yapabilirsiniz:

print(snack[10:-1]) # -1: çünkü dilimlemede bitiş indeksi hariç tutulur.
cookie

Bitiş indeksini belirtmeden dilimlemek, başlangıç indeksinden cümlenin en son indeksine kadar olan karakterleri yakaladığınız anlamına gelir. Benzer şekilde, başlangıç indeksi olmadan dilimlemek, string'in en başından bitiş indeksine kadar başlamanız anlamına gelir:

# Bitiş değeri verilmedi
print(snack[0:]) 

# Başlangıç değeri verilmedi (Söz dizimine göre bitiş değeri hariçtir)
print(snack[:-1])

# Bu da mümkündür
print(snack[:])
Chocolate cookie.
Chocolate cookie
Chocolate cookie.

String dilimleme üçüncü bir parametre olan stride'ı da kabul eder; bu, string'den ilk karakter alındıktan sonra kaç karakter ilerlemek istediğinizi belirtir. stride'ın varsayılan değeri 1'dir.

Daha iyi anlamak için stride'ı uygulamada görelim:

number_string = "1020304050"
print(number_string[0:-1:2])
12345

İpucu: Adımlamayla yapabileceğiniz çok havalı bir şey, bir string'i tersine çevirmektir:

print(number_string[::-1]) #
0504030201

-1 adım değeri, sondaki karakterden başlamanıza ve her seferinde bir karakter hareket etmenize olanak tanır.

Alternatif olarak, değeri -2 verirseniz sondan başlar ve her seferinde iki karakter hareket edersiniz:

print(number_string[::-2]) #
00000

Yaygın String İşlemleri

Dilimleme ve aralık dilimleme, string'lerde gerçekleştirmeniz gereken yaygın işlemlerdir. Ayrıca toplama kadar basit olan string birleştirme de vardır:

string1 = 'Chocolate'
string2 = 'cookie'

snack = string1 + " " + string2
print(snack)
Chocolate cookie

Ancak, bir string'i başka bir veri türüyle birleştirmeye çalışırsanız bu çalışmaz.

cost = 15
string1 = "The total in Euro is: "

bill = string1 + cost
print(bill)
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-218-7d5c5248b927> in <module>()
      2 string1 = "The total in Euro is: "
      3 
----> 4 bill = string1 + cost
      5 print(bill)


TypeError: Can't convert 'int' object to str implicitly

Burada, bir string'i bir tamsayı değeriyle birleştirmeye çalıştınız; bu izin verilmez. Yorumlayıcı, basit tamsayı toplamı mı yoksa string birleştirme mi yapmaya çalıştığınızı örtük olarak anlayamaz. Ancak, şimdi bunu deneyin:

bill = string1 + str(cost)
print(bill)
The total in Euro is: 15

Bunun nedeni, bir tamsayıyı açıkça string değere dönüştürüp ardından birleştirme uygulamanızdır. Veri türü dönüşümleri hakkında daha fazla bilgi için bu eğiticiye göz atın.

Bir string'i tekrarlamak için * işlemini kullanın.

single_word = 'hip '
line1 = single_word * 2 + 'hurray! '
print(line1 * 3)
hip hip hurray! hip hip hurray! hip hip hurray! 

Bir string'de üyelik özelliğini in ve not in ile de kontrol edebilirsiniz:

sub_string1 = 'ice'
sub_string2 = 'glue'
string1 = 'ice cream'
if sub_string in string1:
    print("There is " + sub_string + " in " + string1)
if sub_string2 not in string1:
    print("Phew! No " + sub_string2 + " in " + string1)
There is ice in ice cream
Phew! No glue in ice cream

Python, string'leri işlemek için birçok yerleşik yöntem veya yardımcı fonksiyon sağlar. Bir alt string'i değiştirme, bir paragraftaki belirli kelimeleri büyük harfle başlatma, bir string'in başka bir string içindeki konumunu bulma bu yerleşik yöntemlerle yapabileceğiniz işlemlerden bazılarıdır.

Bunlardan bazılarına ayrıntılı bakalım:

  • str.capitalize(): string'in ilk karakteri büyük harf olacak şekilde bir kopyasını döndürür.
str.capitalize('cookie')
'Cookie'
  • str.islower(): string'deki tüm karakterler küçük harfse true, değilse false döndürür.
snack = 'cookie'
snack.islower()
True
  • str.find(substring): alt string'in bulunduğu en düşük indeksi döndürür. Alt string'in aranmasını istediğiniz başlangıç ve bitiş indekslerini de belirtebilirsiniz. Alt string bulunamazsa -1 döndürür.
str1 = 'I got you a cookie'
str2 = 'cook'
str1.find(str2)
12
  • str.count(substring): alt string'in string içinde kaç kez geçtiğini sayar. String için başlangıç ve bitiş indeksini de belirtebilirsiniz.
str1 = 'I got you a cookie, do you like cookies?'
str2 = 'cookie'
str1.count(str2)
2
  • str.isspace(): string yalnızca boşluk karakterleri içeriyorsa True, aksi halde false döndürür. Boşluk karakterleri; boşluk, sekme, yeni satır vb. karakterlerdir.

Bu, gerçek hayat veri setleriyle çalışırken faydalı olabilir; zira bir formattan diğerine dönüştürme sırasında her zaman uygun boşluklar korunmayabilir.

str_space = '   '
str_space.isspace()
True
str_tab = '\t'
str_tab.isspace()
True
str_nextline = '''\n'''
str_nextline.isspace()
True

Not: Yukarıda gördüğünüz \t, \n'yi fark ettiniz mi? Bunlara kaçış karakterleri denir. Bir \ (ters eğik çizgi) ile başlarlar. İçsel olarak normal string'ler olarak değil, başka bir şeyi temsil eden özel karakterler olarak yorumlanırlar. Örneğin - \t bir sekmeyi temsil eder. Daha birçok kaçış karakteri vardır ve bunlar hakkında daha fazlasını Python Regex eğitimimizde okuyabilirsiniz.

  • str.lstrip(): string'in başındaki tüm boşlukları kaldırır. Gerçek hayat veri setleriyle çalışırken işe yarayabilecek bir başka fonksiyondur.
str1 = " I can't hear you. Are you alright? "
str2 = " Yes, all is good."
str3 = str1.lstrip() + str2.lstrip()
print(str3)
I can't hear you. Are you alright? Yes, all is good.
  • str.isdigit(): string yalnızca rakam içeriyorsa True, aksi halde False döndürür.
number_string = "1020304050"
number_string.isdigit()
True
  • str.replace(substring, new): string içindeki alt string'in tüm oluşumlarını yenisiyle değiştirir. Ayrıca en fazla max sayıda oluşumu değiştiren üçüncü bir argüman max tanımlayabilirsiniz. Bunun yerinde (in-place) bir değiştirme olmadığını, yani değiştirilemez özelliğin hâlâ geçerli olduğunu ve aslında yeni bir string oluşturulduğunu unutmayın.
string1 = 'hip hip hurray! hip hip hurray! hip hip hurray!'
string2 = string1.replace('hip', 'Hip')
print(string1)
print(string2)
hip hip hurray! hip hip hurray! hip hip hurray!
Hip Hip hurray! Hip Hip hurray! Hip Hip hurray!
string1.replace('hip', 'Hip', 2)
'Hip Hip hurray! hip hip hurray! hip hip hurray!'
  • str.split(delimiter=""): string'i ayırıcıya (verilmezse boşluk) göre böler ve alt string'lerin bir listesini döndürür.
dessert = 'Cake, Cookie, Icecream'
list_dessert = string1.split(',')

Python'daki string yöntemlerinin kapsamlı bir listesini burada bulabilirsiniz.

String Biçimlendirme

Python bir string'i biçimlendirmek için birden fazla yöntemi destekler. Bu bölümde, string biçimlendirme hakkında daha fazlasını öğreneceksiniz!

% Biçimlendirme

Modül %, Python'da yerleşik bir işlemdir. Aradeğer yerleştirme operatörü olarak bilinir. Biçimlendirilecek veya dönüştürülecek veri türünü belirten %'i sağlamanız gerekir. % işlemi daha sonra '%datatype' ifadesini belirtilen veri türünde sıfır veya daha fazla öğe ile değiştirir:

print("I bought %d Euro worth of %s!" %(200, 'cookies'))
I bought 200 Euro worth of cookies!

%d'nin tamsayılar için ve %s'nin string'ler için kullanıldığını gördünüz. Mevcut diğer dönüşüm türlerinden bazıları şunlardır: sekizlik değerler için o, onaltılık için x, kayan noktalı ondalık biçim için f, tek karakter için c (tamsayı veya tek karakterlik string kabul eder).

Formatter sınıfı

formatter sınıfı yerleşik string sınıflarından biridir. format() yöntemiyle karmaşık değişken yerleştirmeleri ve değer biçimlendirmeleri yapma olanağı sağlar. İçerdiği genel yöntemleri (format(), vformat()) yeniden yazarak kendi string biçimlendirme davranışlarınızı oluşturup özelleştirmenize izin verir. Alt sınıflar tarafından değiştirilmesi amaçlanan bazı yöntemleri vardır: parse(), get_field(), get_value(), check_unused_args(), format_field() ve convert_field(). Ancak sadelik adına, burada yalnızca en yaygın kullanılan format() fonksiyonunu uygulamada göreceksiniz...

print("I bought {0} Euro worth of {1}!".format(200,'cookies')) #Konuma göre değerlere erişim
I bought 200 Euro worth of cookies!
print("I bought {total} Euro worth of {item}!".format(total = 200, item = 'cookies')) #Ada göre değerlere erişim
I bought 200 Euro worth of cookies!
'{:#<10}'.format('Cake') #"Cake" kelimesi için sola hizalama, boşluklar '#' ile doldurulur
'Cake######'
'{:#^10}'.format('Cake') #"Cake" kelimesi için ortalama, boşluklar '#' ile doldurulur
'###Cake###'
'{:#>10}'.format('Cake') #"Cake" kelimesi için sağa hizalama, boşluklar '#' ile doldurulur
'######Cake'
for num in range(1,10): 
        print('{0:{width}}'.format(num, width=5), end=' ')
    1     2     3     4     5     6     7     8     9 

Şablon String'ler

Normal % tabanlı yerleştirmeler yerine, şablonlar $ tabanlı yerleştirmeleri destekler. Python 2.4 sürümünde şablonların eklenmesinin nedeni, % string biçimlendirmenin güçlü ve zengin olmasına rağmen hataya açık ve '%' sonrasında gelen biçimler açısından oldukça katı olması, dolayısıyla karmaşık hale gelmesidir. % biçimlendirmede yaygın bir hata, sonda gelen biçim karakterini unutmak, örneğin: %(variabl)e'deki e.

Şablonların içinde tanımlı bazı yöntemler vardır: substitute() ve safe_substitute(). Bunları şu şekilde kullanabilirsiniz:

from string import Template #Önce 'Template' sınıfını içe aktarmanız gerekir

money = dict(who = 'You', to_whom = 'baker')
Template('$who owe the $to_whom a total of $$100').substitute(money)
'You owe the baker a total of $100'

Yukarıdaki örnekteki $$'i fark ettiniz mi?

Şablonlarda $$ bir kaçış karakteridir ve tek bir $ ile değiştirilir. Bu, şablonların kurallarından biridir. Şablonlar için bir diğer kural, tanımlayıcıyı şablon içinde nasıl belirlediğinizdir; alışılmış söz dizimi $identifier'dır, ancak ${identifier} da vardır.

Yani ${identifier}, $identifier ile aynıdır; ancak şu gibi senaryolarda kullanılabilir:

word = dict(noun = 'feed')
Template('Please don\'t stop ${noun}ing me').substitute(word)
"Please don't stop feeding me"

substitute() ve safe_substitute()'ı nasıl kullanabileceğinizi görelim.

fact = Template('$alter_ego is weak but wait till he transforms to $superhero!')
fact.substitute(alter_ego='Bruce Banner', superhero='Hulk')
'Bruce Banner is weak but wait till he transforms to Hulk!'
hero = dict(alter_ego='Peter Parker')
fact.substitute(hero)
---------------------------------------------------------------------------

KeyError                                  Traceback (most recent call last)

<ipython-input-244-c82f6a2ebc02> in <module>()
      1 hero = dict(alter_ego='Peter Parker')
----> 2 fact.substitute(hero)


~/anaconda3/envs/tensorflow/lib/python3.5/string.py in substitute(*args, **kws)
    127             raise ValueError('Unrecognized named group in pattern',
    128                              self.pattern)
--> 129         return self.pattern.sub(convert, self.template)
    130 
    131     def safe_substitute(*args, **kws):


~/anaconda3/envs/tensorflow/lib/python3.5/string.py in convert(mo)
    117             named = mo.group('named') or mo.group('braced')
    118             if named is not None:
--> 119                 val = mapping[named]
    120                 # We use this idiom instead of str() because the latter will
    121                 # fail if val is a Unicode containing non-ASCII characters.


KeyError: 'superhero'

Yukarıdaki örnek hata veriyor; çünkü superhero tanımlı değil. Ancak, şunu deneyin...

fact.safe_substitute(hero)
'Peter Parker is weak but wait till he transforms to $superhero!'

safe_substitute(), şablon kullanmanın avantajlarından biridir.

Neden bu kadar çok string biçimlendirme seçeneği var, diye sorabilirsiniz?

Aslında bu, öncelikle söz dizimi tercihleri meselesidir. Genellikle sadelik ile ayrıntılılık arasında bir ödünleşime ve mevcut söz dizimlerine aşinalığınıza bağlıdır. Örneğin, string biçimlendirme için % kullanmak, C programlama geçmişi olanlara doğal gelecektir. Python'daki şablonlar yazması basittir; format() kullanımı ise daha ayrıntılı olabilir ama daha fazla özelliğe sahiptir.

Biçimlendirilmiş String Literal (f-string)

Bu, Python 3.6 sürümüne eklenen bir diğer string biçimlendirme yöntemidir. Biçimlendirilmiş string literal veya f-string, başına 'f' veya 'F' getirilen string literal'ıdır. String'inizde kullanılacak tanımlayıcıları süslü parantezler { } içinde belirtebilirsiniz.

Neden bir başka string biçimlendirme seçeneği daha? Pratiklik ve sadelik güzeldir de ondan!

Aşağıdaki örneklere göz atın; f-string'lerin neden Python'da string biçimlendirmek için en basit ve en pratik yol olduğunu görün.

alter_ego = 'Peter Parker' superhero = 'spiderman' f'{alter_ego} is weak but wait till he transforms to {superhero}!'

Not: Yukarıdaki kod yalnızca Python 3.6 ve üstü sürümlerde çalışır. Yüklü Python sürümünüzü kontrol etmek için terminalde: python -V yazın. Ya da Python içinde sys modülünü de kullanabilirsiniz. Bunu kullanmak için şunları yapın:

import sys
sys.version

Biçimlendirilmiş string'ler, çalışma zamanında değerlendirilen ifadelerdir; bu da f-string'lerin süslü parantezleri içine herhangi bir Python ifadesini yazabileceğiniz anlamına gelir; bu da f-string kullanmanın bir diğer büyük avantajıdır.

f'{alter_ego} is weak but wait till he transforms to {superhero.capitalize()}!'

F-string harika değil mi! Ama durun, dahası da var... f-string'ler, önceki üç yönteme kıyasla daha da hızlıdır. Bunun nedeni, önceden ayrıştırılıp daha hızlı yürütme için verimli bayt kodunda saklanmalarıdır.

Doğru İpleri Çekin!

Eğitimin sonuna geldiniz, tebrikler! String'lerin ne olduğunu gördünüz, string dilimlemeyi öğrendiniz ve string'ler üzerinde yapılabilecek bazı işlemleri incelediniz. Ayrıca string'leri biçimlendirmenin bir dizi yolunu da gördünüz. Ancak unutmayın, herhangi bir tekniğe hâkim olmanın anahtarı pratiktir!

String'ler, Python'daki çeşitli veri türlerinden yalnızca biridir. Listeler, sözlükler, demetler ve kümeler hakkında daha fazla bilgi edinmek için DataCamp'in Data Types for Data Science kursuna göz atın. Bu kursta veri türleri konusundaki bilginizi kullanacaksınız. Chicago metropol alanına ait toplu taşıma verileriyle veri bilimi amaçlı çalışacaksınız. Gidip kendiniz görün...

Konular
Python
Veri Bilimi

DataCamp'te Python Kursları

Kurs

Python'da Veri Tipleri

4 sa
88.5K
Python veri türleri olan listeler, sözlükler ve demetler hakkındaki bilginizi pekiştirin ve genişletin; bunları Veri Bilimi problemlerini çözmek için kullanın.
Ayrıntıları GörüntüleRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Devamını GörDevamını Gör