Python String (Metin) İşlemleri
Python string veri tipi ile metin işlemleri, büyük–küçük harf dönüşümleri ve metin uzunluğu hesaplamayı öğrenin.
Python'da string (Türkçe'de "dize" veya "karakter dizisi" olarak da adlandırılır), karakterlerden oluşan sıralı bir veri tipidir. Metinsel verileri temsil etmek için kullanılır. Python'da stringler `str` sınıfına aittir.
## Stringlerin Temel Özellikleri
1. **Değiştirilemezlik (Immutable):** Python'daki stringlerin en önemli özelliklerinden biridir. Bir string oluşturulduktan sonra içeriği doğrudan değiştirilemez. Eğer bir string üzerinde bir işlem yapıp onu değiştirmeye çalışırsanız (örn. karakter değiştirme, ekleme, çıkarma), Python aslında eski stringi değiştirmek yerine **yeni bir string oluşturur**.
2. **Sıralı (Ordered):** Stringdeki her karakterin belirli bir sırası ve dolayısıyla bir indeksi (konumu) vardır. Bu indeksler 0'dan başlar.
3. **Tekrarlanabilir (Iterable):** Stringler, karakterleri üzerinde döngü yapılabilecek veri yapılarıdır.
## String Oluşturma
Stringler tek tırnak (`'...'`), çift tırnak (`"..."`) veya üçlü tırnak (`'''...'''` veya `"""..."""`) kullanarak oluşturulabilir.
```python
# Tek tırnak ile
metin1 = 'Merhaba Dünya'
print(metin1)
# Çift tırnak ile
metin2 = "Python öğreniyorum"
print(metin2)
# Üçlü tırnak ile (çok satırlı stringler için idealdir)
metin3 = """Bu,
çok satırlı
bir string örneğidir."""
print(metin3)
# İçinde tırnak olan stringler
metin4 = "O'nun adı 'Ayşe' idi."
metin5 = 'Bu bir "alıntı" içerir.'
print(metin4)
print(metin5)
```
## String İşlemleri
### 1. Karakterlere Erişim (Indexing)
Stringlerdeki tek tek karakterlere indeks numarası ile erişilebilir. İndeksler 0'dan başlar. Negatif indeksler, stringin sonundan geriye doğru sayar (`-1` son karakterdir).
```python
isim = "PYTHON"
print(isim[0]) # P
print(isim[1]) # Y
print(isim[5]) # N
print(isim[-1]) # N (son karakter)
print(isim[-6]) # P (ilk karakter)
```
### 2. Dilimleme (Slicing)
Stringin belirli bir bölümünü (alt stringini) almak için dilimleme kullanılır. Sözdizimi `[başlangıç:bitiş:adım]` şeklindedir.
* `başlangıç`: Dahil edilecek ilk indeks. (Varsayılan: 0)
* `bitiş`: Dahil edilmeyecek ilk indeks. (Varsayılan: stringin sonu)
* `adım`: Her kaç karakterde bir alınacağı. (Varsayılan: 1)
```python
metin = "Programlama"
print(metin[0:7]) # Program
print(metin[3:]) # gramlama (3. indeksten sonuna kadar)
print(metin[:5]) # Progr (başlangıçtan 5. indekse kadar)
print(metin[::2]) # Prgam (baştan sona 2'şer atlayarak)
print(metin[1:9:3]) # rga (1. indeksten 9. indekse kadar 3'er atlayarak)
print(metin[::-1]) # amalgamorP (stringi ters çevirir)
```
### 3. String Birleştirme (Concatenation)
İki veya daha fazla stringi `+` operatörü ile birleştirebilirsiniz.
```python
ad = "Ali"
soyad = "Veli"
tam_ad = ad + " " + soyad
print(tam_ad) # Ali Veli
```
**Dikkat:** Büyük stringleri veya çok sayıda stringi birleştirirken `+` operatörü yerine `join()` metodunu kullanmak performans açısından daha iyidir. Çünkü `+` her birleştirme işleminde yeni bir string oluşturur.
### 4. String Tekrarlama (Repetition)
Bir stringi `*` operatörü ile belirli sayıda tekrarlayabilirsiniz.
```python
yildizlar = "*" * 10
print(yildizlar) # **********
tekrar_metin = "Python " * 3
print(tekrar_metin) # Python Python Python
```
### 5. Uzunluk Bulma (`len()`)
`len()` fonksiyonu, bir stringin kaç karakterden oluştuğunu döndürür.
```python
mesaj = "Merhaba Dünya!"
uzunluk = len(mesaj)
print(uzunluk) # 14
```
### 6. Üyelik Kontrolü (`in`, `not in`)
Bir alt stringin başka bir string içinde olup olmadığını kontrol etmek için `in` ve `not in` operatörleri kullanılır.
```python
cumle = "Python harika bir programlama dilidir."
print("Python" in cumle) # True
print("java" in cumle) # False
print("harika" not in cumle) # False
```
## String Metodları
Python string sınıfı, stringler üzerinde birçok kullanışlı işlem yapmamızı sağlayan zengin bir metot setine sahiptir. Stringler değiştirilemez olduğu için, bu metotlar genellikle yeni bir string döndürür, orijinal stringi değiştirmez.
### 1. Durum Değiştirme (Case Conversion)
* `lower()`: Tüm karakterleri küçük harfe çevirir.
* `upper()`: Tüm karakterleri büyük harfe çevirir.
* `capitalize()`: Stringin sadece ilk karakterini büyük harfe, diğerlerini küçük harfe çevirir.
* `title()`: Her kelimenin ilk harfini büyük, diğerlerini küçük harfe çevirir.
* `swapcase()`: Büyük harfleri küçük, küçük harfleri büyük yapar.
```python
metin = "Merhaba Dünya, Ben Python!"
print(metin.lower()) # merhaba dünya, ben python!
print(metin.upper()) # MERHABA DÜNYA, BEN PYTHON!
print(metin.capitalize()) # Merhaba dünya, ben python!
print(metin.title()) # Merhaba Dünya, Ben Python!
print(metin.swapcase()) # mERHABA dÜNYA, bEN pYTHON!
```
### 2. Arama ve Değiştirme (Search and Replace)
* `count(alt_string)`: Bir stringde belirli bir alt stringin kaç kez geçtiğini sayar.
* `find(alt_string)`: Bir stringde alt stringin ilk geçtiği indeksini döndürür. Bulamazsa `-1` döndürür.
* `rfind(alt_string)`: Bir stringde alt stringin son geçtiği indeksini döndürür. Bulamazsa `-1` döndürür.
* `index(alt_string)`: `find()` gibidir, ancak bulunamazsa `ValueError` hatası verir.
* `rindex(alt_string)`: `rfind()` gibidir, ancak bulunamazsa `ValueError` hatası verir.
* `startswith(öneki)`: Stringin belirtilen önekle başlayıp başlamadığını kontrol eder.
* `endswith(soneki)`: Stringin belirtilen sonekle bitip bitmediğini kontrol eder.
* `replace(eski, yeni, sayi=None)`: Eski alt stringi yeni alt string ile değiştirir. `sayi` belirtilirse, o kadar sayıda değiştirme yapar.
```python
cumle = "Merhaba dünya, Python çok güzel bir dünya."
print(cumle.count("dünya")) # 2
print(cumle.find("Python")) # 15
print(cumle.rfind("dünya")) # 35 (son geçen dünya)
# print(cumle.index("Java")) # ValueError
print(cumle.startswith("Mer")) # True
print(cumle.endswith("dünya."))# True
print(cumle.replace("dünya", "evren")) # Merhaba evren, Python çok güzel bir evren.
print(cumle.replace("dünya", "evren", 1)) # Sadece ilk 'dünya' değişir
```
### 3. Bölme ve Birleştirme (Split and Join)
* `split(ayırıcı=None, maxsplit=-1)`: Stringi belirtilen ayırıcıya göre böler ve bir liste döndürür. Ayırıcı belirtilmezse boşluk karakterine göre böler.
* `splitlines()`: Stringi satır sonu karakterlerine (`\n`, `\r\n`) göre böler ve bir liste döndürür.
* `join(iterable)`: Bir iterable (liste, tuple vb.) içindeki stringleri, metodu çağıran stringi (ayırıcı olarak) kullanarak birleştirir.
```python
veri = "elma,armut,muz,çilek"
meyveler = veri.split(',')
print(meyveler) # ['elma', 'armut', 'muz', 'çilek']
cumle = "Bu\nbir\nçok\nsatırlı\nmetin."
satirlar = cumle.splitlines()
print(satirlar) # ['Bu', 'bir', 'çok', 'satırlı', 'metin.']
liste_kelimeler = ["Merhaba", "dünya", "nasıl", "gidiyor?"]
birlesik_string = " ".join(liste_kelimeler)
print(birlesik_string) # Merhaba dünya nasıl gidiyor?
dosya_yolu = "/usr", "local", "bin", "python"
print("/".join(dosya_yolu)) # /usr/local/bin/python
```
### 4. Boşluk Karakterlerini Kaldırma (Stripping)
* `strip(chars=None)`: Stringin başındaki ve sonundaki boşluk karakterlerini (veya belirtilen karakterleri) kaldırır.
* `lstrip(chars=None)`: Stringin sadece başındaki boşluk karakterlerini (veya belirtilen karakterleri) kaldırır.
* `rstrip(chars=None)`: Stringin sadece sonundaki boşluk karakterlerini (veya belirtilen karakterleri) kaldırır.
```python
kelime = " Python Dersleri "
print(kelime.strip()) # "Python Dersleri"
veri = "---Merhaba---"
print(veri.strip('-')) # Merhaba
metin = "\n\t Hello World \n\t"
print(metin.strip()) # Hello World
```
### 5. String Biçimlendirme (Formatting)
String biçimlendirme, dinamik olarak stringler oluşturmak için kullanılır.
* **`%` Operatörü (Eski yöntem):** C dilindeki `printf` benzeri bir yaklaşımdır.
```python
isim = "Ayşe"
yas = 30
print("Benim adım %s ve %d yaşındayım." % (isim, yas))
```
* **`format()` Metodu:** Daha esnek ve okunabilir bir yöntemdir.
```python
urun = "Laptop"
fiyat = 1200.50
print("Ürün: {}, Fiyat: {} TL".format(urun, fiyat))
print("Ürün: {0}, Fiyat: {1:.2f} TL".format(urun, fiyat)) # İndeks ve ondalık biçimlendirme
print("Ürün: {ad}, Fiyat: {para:.2f} TL".format(ad=urun, para=fiyat)) # Anahtar kelime argümanları
```
* **F-stringler (Formatted String Literals) - Python 3.6+ (Önerilen yöntem):** En modern, okunabilir ve güçlü yöntemdir. Stringin başına `f` veya `F` harfi eklenir ve süslü parantezler içinde doğrudan değişkenleri veya ifadeleri kullanabilirsiniz.
```python
marka = "Samsung"
model = "Galaxy S23"
fiyat = 25000
print(f"Telefonumun markası {marka}, modeli {model} ve fiyatı {fiyat} TL.")
# İfade kullanma
x = 10
y = 5
print(f"{x} + {y} = {x + y}") # 10 + 5 = 15
# Biçimlendirme specifier'ları
pi = 3.14159
print(f"Pi sayısı iki ondalık basamakla: {pi:.2f}") # Pi sayısı iki ondalık basamakla: 3.14
```
### 6. Karakter Tipi Kontrol Metotları
* `isalnum()`: Stringin yalnızca harf ve rakamlardan oluşup oluşmadığını kontrol eder.
* `isalpha()`: Stringin yalnızca harflerden oluşup oluşmadığını kontrol eder.
* `isdigit()`: Stringin yalnızca rakamlardan oluşup oluşmadığını kontrol eder.
* `islower()`: Stringdeki tüm harflerin küçük harf olup olmadığını kontrol eder.
* `isupper()`: Stringdeki tüm harflerin büyük harf olup olmadığını kontrol eder.
* `isspace()`: Stringin yalnızca boşluk karakterlerinden oluşup oluşmadığını kontrol eder.
* `istitle()`: Stringin bir başlık gibi (her kelimenin ilk harfi büyük) biçimlendirilip biçimlendirilmediğini kontrol eder.
```python
s1 = "Python123"
s2 = "Python"
s3 = "12345"
s4 = " "
print(s1.isalnum()) # True
print(s2.isalpha()) # True
print(s3.isdigit()) # True
print(s4.isspace()) # True
print("hello".islower()) # True
print("WORLD".isupper()) # True
print("Hello World".istitle()) # True
```
### 7. Hizalama ve Doldurma
* `ljust(genişlik, dolgu_karakteri=' ')`: Stringi sola hizalar ve belirtilen genişliğe kadar doldurur.
* `rjust(genişlik, dolgu_karakteri=' ')`: Stringi sağa hizalar ve belirtilen genişliğe kadar doldurur.
* `center(genişlik, dolgu_karakteri=' ')`: Stringi ortalar ve belirtilen genişliğe kadar doldurur.
* `zfill(genişlik)`: Stringi sıfırlarla solundan doldurur (sayısal değerler için kullanışlıdır).
```python
isim = "Ali"
print(isim.ljust(10, '-')) # Ali-------
print(isim.rjust(10, '*')) # *******Ali
print(isim.center(10, '='))# ===Ali====
sayi = "42"
print(sayi.zfill(5)) # 00042
```
## Özel String Tipleri
* **Escape Dizileri:** String içinde özel karakterleri (örn. yeni satır, sekme) veya tırnak işaretlerini temsil etmek için kullanılır. `\` (ters eğik çizgi) ile başlar.
* `\n`: Yeni satır
* `\t`: Sekme (tab)
* `\\`: Ters eğik çizgi
* `\'`: Tek tırnak
* `\"`: Çift tırnak
```python
print("Bu bir\nyeni satır örneğidir.")
print("İsim:\tMehmet")
print("Dosya yolu: C:\\Users\\Kullanici\\Belgeler")
```
* **Ham Stringler (Raw Strings):** Bir stringin başına `r` veya `R` koyarak oluşturulur. Bu, ters eğik çizgilerin özel bir karakter olarak yorumlanmasını engeller. Özellikle düzenli ifadeler (regex) veya dosya yolları belirtirken kullanışlıdır.
```python
# Normal stringde \n yeni satır olarak yorumlanır
print("C:\ninanlar\nasıl") # C:
# inanlar
# nasıl
# Ham stringde \n olduğu gibi yazılır
print(r"C:\ninanlar\nasıl") # C:\ninanlar\nasıl
```
## Sonuç
Python'daki stringler, metinsel verilerle çalışmak için inanılmaz derecede güçlü ve esnek bir araçtır. Değiştirilemez olmaları, beklenmedik yan etkileri önlerken, zengin metot kütüphanesi sayesinde neredeyse her türlü metin işleme ihtiyacını karşılayabilirler. F-stringler gibi modern özellikler, string biçimlendirmeyi daha da kolay ve okunabilir hale getirmiştir.
Son Paylaşımlar
-
Python Temelleri Genel Tekrar
14:39:24 - 13/12/2025 -
Python Performans İpuçları
14:38:59 - 13/12/2025 -
Python’da Temiz Kod Yazma
14:38:28 - 13/12/2025 -
Python Mini Proje: Sayı Tahmin Oyunu
14:37:58 - 13/12/2025 -
Python Mini Proje: Hesap Makinesi
14:37:31 - 13/12/2025