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
Kategoriler