Metin, Ama Metotlarla
Bir Python string'i karakter dizisidir ve string'leri diğer her tipten daha çok kullanırsın. Her isim, etiket, mesaj, URL, dosya yolu ve API yanıtı bir noktada bir string'de yaşar.
Tırnaklarla oluştur — tek, çift ya da üçlü:
Tek ve çift tırnaklar birbirinin yerine geçebilir. Hangisi bir karakteri kaçırmaktan (escape) kurtarıyorsa onu kullan. "don't" temizdir; 'don\'t' ters eğik çizgi ister.
String'ler değiştirilemezdir. Bir string var olduktan sonra karakterini yerinde değiştiremezsin. Bir string'i değiştiriyor gibi görünen her işlem aslında yeni bir string döner. Bu yüzden text.upper() yerine text = text.upper() yazarsın — yeniden atama olmadan yeni büyük harfli string atılırdı.
Birleştirme ve Tekrarlama
İki operatör ihtiyaç duyacağın string birleştirme işinin çoğunu yapar:
+ string'leri birleştirir. * bir string'i tekrarlar. İkisi de yeni bir string döner.
Çok sayıda parçayı + ile birleştirmek hızla çirkinleşir. Bir mesaja farklı tiplerden değerler karıştırırken f-string'lere başvur — bir sonraki bölüme bak.
f-String'ler: Genelde Formatlayacağın Yol
Açılış tırnağının önüne bir f koy, string bir şablona dönüşür. {...} içindeki her şey, o ifadenin değeriyle değiştirilir:
Parantezlerin içine her türlü ifade koyabilirsin — değişkenler, aritmetik, metot çağrıları, fonksiyon çağrıları. Ama yine de basit tut; üç satırlık bir hesaplamayı {...} içine tıkıştırmak geliyorsa, önce onu isimlendirilmiş bir değişkene hesapla.
f-string'ler sayı biçimlendirmesi, doldurma ve hizalama kontrolü için iki noktadan sonra biçim belirteçlerini de destekler:
Bu biçim spec'leri str.format()'ın kullandıklarıyla aynıdır ve temel konulara alıştığında hızlı bir göz atmaya değer. İlk günün kodu için onlara ihtiyacın yok.
Dilimleme: Bir Parça Al
String'ler, diziler gibi indekslenebilirdir. Her karakterin sıfır tabanlı bir pozisyonu vardır ve tek bir karakteri ya da bir aralığı yakalayabilirsin:
[start:stop:step] kalıbı listelerde ve diğer dizilerde de ortaya çıkar; onu içselleştirmeye birkaç dakika harcamak her yerde kendini amorti eder.
Dikkat çekmeye değer iki şey:
stopindeksi hariçtir:word[0:2]indeks 0 ve 1'i içerir, 2'yi değil.- Negatif indeksler sondan sayar:
-1son karakter,-2bir öncesi vb.
Bir String'i Nasıl Ters Çevirirsin
String'lerin .reverse() metodu yoktur — değiştirilemezler — ama adımı -1 olan dilimleme işi tek satırda halleder:
word[::-1] ifadesi "baştan sona, 1 geriye adımla" diye okunur. Sonuç bambaşka yeni bir string'dir; orijinal dokunulmaz. Karakterleri ters yönde dolaşmak istiyorsan ama yeni bir string oluşturmak istemiyorsan reversed(word) tembel bir yineleyici döner.
Bir String'in Uzunluğunu Nasıl Kontrol Edersin
len(text) karakter sayısını döner:
len'in Unicode kod noktalarını saydığını, bayt olmadığını unutma. len("café") UTF-8 kodlaması daha fazla bayt alsa da 4'tür, 5 değil — ki bu genelde istediğin şeydir.
Bir String'in Bir Alt Dizeyi İçerip İçermediğini Nasıl Kontrol Edersin
in operatörü deyimsel kontroldür ve İngilizce gibi okunur:
Büyük/küçük harf duyarsız kontrol için önce iki tarafı normalleştir:
Evet/hayır değil de pozisyon istiyorsan .find() kullan — indeksi döner ya da alt dize yoksa -1.
Yaygın String Metotları
String'lerin onlarca metodu var. Bu avuç dolusu metoda sürekli başvuracaksın:
Bölme ve birleştirme:
.split(separator) bir string'i bir listeye çevirir. separator.join(list_of_strings) onu geri yapıştırır. Bu iki metot gerçek dünyadaki string işlerinin orantısız bir kısmını taşır.
Bir tane daha kullanışlı ikili:
Üç satırda yazılmış tek satırlık bir yapılandırma girdisi için ayrıştırıcı. Küçük string'ler, büyük kaldıraç.
İçeriği Kontrol Etmek
Birkaç metot if koşullarında kullanışlı boolean döner:
Bunları tedbirli kullan — Unicode özelliklerini beklediğin her şekilde ele almazlar. ASCII'nin ötesindeki her şey için ya regex modülüne ya da unicodedata modülüne güven.
Özel Karakterleri Kaçırma
Bazı karakterlerin bir string içinde görünmesi için ters eğik çizgi gerekir:
Windows yolları ya da regex yazıyorsan raw string'ler hayatı kolaylaştırır. Tırnağın önüne bir r koy, ters eğik çizgiler kaçış karakteri olmaktan çıkar:
String'ler Her Yerde, O Yüzden Okunur Tut
String ağırlıklı kodu çorbaya dönmekten koruyan üç alışkanlık:
- Enterpolasyon için f-string kullan. Farklı tipler arasında
+zincirleme. - "Değiştirirken" yeniden ata. Tek başına
text.strip()değil,text = text.strip(). - Metin ayrıştırmak ya da birleştirmek için manuel döngüler yazmadan önce
.split()ve.join()'e başvur. Daha hızlı, daha açık ve yanlış yapması daha zor.
Sırada: f-string'lere derinlemesine — şimdiye dek birkaç kez gördüğün biçimlendirme aracı, artı onları öğrenmeye değer kılan sayı ve tarih biçim spec'leri.
Sıkça Sorulan Sorular
Python'da f-string nedir?
f-string, başına f konulmuş bir string literal'dır; {...} içinde ne varsa o ifadenin değeriyle değiştirilir. Örnek: f"Hello, {name}!" çalışma zamanında name değişkeninin mevcut değerini string'e yerleştirir.
Python'da bir string'i nasıl ters çeviririm?
Adımı -1 olan dilimleme kullan: reversed_text = original[::-1]. Bu, aynı karakterlerden oluşan ters sıralı yeni bir string döner. Python'da string'ler değiştirilemez olduğu için orijinal dokunulmadan kalır.
Python'da bir string'i nasıl bölerim?
String üzerinde .split() çağır. Argümansız olduğunda herhangi bir boşluğa göre böler: "a b c".split() ['a', 'b', 'c'] döner. Belirli bir ayraç geçebilirsin: "a,b,c".split(",") ['a', 'b', 'c'] döner.
Python string'leri değiştirilebilir mi?
Hayır. String'ler değiştirilemezdir — bir string var olduktan sonra karakterlerinden hiçbirini yerinde değiştiremezsin. Bir string'i "değiştiren" her metot aslında yeni bir string döner. Bu yüzden text = text.strip() gibi kalıplar görürsün — değişkeni yeni string'e yeniden atarsın.
Python'da string'leri nasıl birleştiririm?
İki string'i birleştirmek için + kullan: "hello" + " " + "world". Bir değeri bir cümleye katmak için f-string'i tercih et: f"Hello, {name}". Bir listedeki çok sayıda parçayı birleştirmek için separator.join(pieces) kullan — zincirlenmiş +'tan hem daha hızlı hem daha iyi okunur.
Python'da bir string'in uzunluğunu nasıl kontrol ederim?
Yerleşik len(text) çağır. Karakter sayısını (Unicode kod noktaları) döner, yani len("café") 4'tür. Bayt uzunluğu için önce kodla: len(text.encode("utf-8")).