Python'da Metin İşleme: String Metotları ve f-string
Beceri rehberi

Python'da Metin İşleme: String Metotları ve f-string

Hazırlayan: Mindset Institute EditörlüğüGüncellendi: 5 dk okuma

Metinleri bölmeyi, birleştirmeyi, temizlemeyi ve aramayı string metotlarıyla, değerleri metne yerleştirmeyi ise f-string ile nasıl yapacağınızı kısa örneklerle öğrenirsiniz.

Bir bakışta

  1. String'ler değiştirilemez; her metot yeni bir metin döndürür. Sonucu bir değişkene atamazsanız orijinal metin aynı kalır.
  2. split metni listeye böler, join listeyi metne birleştirir. İkisi birbirinin tersidir ve veri temizlemede birlikte kullanılır.
  3. strip uçlardaki karakterleri temizler, replace belirli bir parçayı değiştirir. strip karakter kümesiyle çalışır, önek ya da sonek silmek için ayrı metotlar vardır.
  4. f-string, değişkenleri doğrudan metnin içine yerleştirir. Metnin önüne f koyup değerleri küme parantezi içinde yazarsınız.
  5. Çok sayıda parçayı + ile eklemek yerine join kullanın. Python belgelerine göre join, metin parçalarını verimli birleştirmenin önerilen yoludur.

Metin değiştirilemez bir dizidir

Python belgelerine göre string, Unicode karakterlerden oluşan değiştirilemez bir dizidir. Bu yüzden hiçbir string metodu orijinal metni değiştirmez; her biri yeni bir metin döndürür. Bunu atlayan bir kod sessizce çalışır ama hiçbir şey yapmaz:

ad = ' Ayşe Yılmaz ' ad.strip() print(ad)

Bu kod strip sonucunu atamadığı için ad hâlâ boşluklu görünür. Doğrusu sonucu yeniden bir değişkene atamaktır:

temiz_ad = ad.strip()

Metnin parçalarına dilimleme ile ulaşılır. Yazım liste dilimlemesiyle aynıdır: metin[baslangic:bitis], başlangıç dahil bitiş hariç. len uzunluğu verir, in operatörü bir parçanın metinde geçip geçmediğini sorgular:

ilk_parca = ad[:bitis] var_mi = 'Ayşe' in ad uzunluk = len(ad)

Temizlik: strip, replace, lower

Dışarıdan gelen metinler, örneğin formlar, dosyalar ve tablolar, çoğu zaman baştaki sondaki boşluk, tutarsız büyük küçük harf ve istenmeyen karakter içerir. Temizlik için üç metot sık kullanılır.

strip(), baştaki ve sondaki boşlukları atar; lstrip yalnız solu, rstrip yalnız sağı temizler. Python belgelerine göre strip'e karakter verirseniz bu, önek ya da sonek değil bir karakter kümesidir. Belirli bir öneki ya da soneki tam olarak silmek için removeprefix ve removesuffix kullanılır.

replace(eski, yeni), eski parçanın tüm geçtiği yerleri yeni parçayla değiştirir; üçüncü bir sayı parametresi değişiklik adedini sınırlar. lower() tüm harfleri küçültür; büyük küçük harf duyarsız eşleştirme için belgeler daha kapsamlı olan casefold metodunu da anar.

Türkçe metinde dikkatli olun: İ ve ı harfleri varsayılan lower ve upper ile her zaman beklenen şekilde dönüşmeyebilir. Türkçe içerik işliyorsanız sonucu örnek verilerle deneyin.

Bu metotlar zincirlenebilir, çünkü her biri metin döndürür:

temiz = ham_metin.strip().lower().replace('-', ' ')

Şekil 1

Temizlik metotları sırayla zincirlenir

  1. stripUçlardaki boşlukları atar.
  2. lowerHarfleri küçültür.
  3. replaceİstenmeyen karakteri değiştirir.
Kaynak: Python belgeleri: Built-in Types, string metotlarıMindset Institute

Bölme ve birleştirme: split ve join

split, metni bir ayraca göre parçalara böler ve liste döndürür. Ayraç verilmezse ardışık boşluklar tek ayraç sayılır ve uçlardaki boş parçalar atılır. join ise bunun tersidir: ayracı kendisi olan metnin üzerinde çağrılır ve verilen listeyi tek metne birleştirir.

satir = 'elma,armut,kiraz' meyveler = satir.split(',') birlesik = ' - '.join(meyveler)

İlk satır virgülle bölünmüş liste verir, ikinci satır parçaları tire ayracıyla yeniden birleştirir. split ayracı belirtildiğinde, ardışık ayraçlar arasında boş metin üretir; ayraç verilmediğinde ise boş parçalar atılır. Bu fark, veri temizlerken şaşırtıcı sonuç verebilir.

join yalnızca metinlerden oluşan listeyle çalışır; içinde sayı varsa TypeError verir. Önce sayıları str ile metne çevirin:

rapor = ', '.join(str(deger) for deger in degerler)

Belgeler, çok sayıda parçadan metin kurarken join kullanmanızı önerir; tekrarlanan + ile birleştirme her seferinde yeni bir metin ürettiği için büyük verilerde yavaşlar.

Şekil 2

Çok parçayı + ile eklemek yerine join kullanın

Uzun yol
Önerilen yol
sonuc = sonuc + parca
sonuc = ayrac.join(parcalar)
Her ekleme yeni bir metin üretir
Parçalar tek seferde birleşir
Büyük listelerde yavaşlar
Okunaklı ve verimli
Kaynak: Python belgeleri: Built-in Types, string metotlarıMindset Institute

Arama ve kontrol: find, in, startswith

Bir metnin içinde parça aramak için birkaç yol vardır. in operatörü yalnızca var mı yok mu sorusunu yanıtlar: 'Py' in 'Python' doğru döner. find(parca), parçanın ilk göründüğü konumu verir; bulunamazsa eksi bir döndürür. index metodu benzerdir ama bulunamazsa ValueError üretir. Konuma gerçekten ihtiyaç yoksa in yeterlidir.

startswith(onek) ve endswith(sonek), metnin belirli bir başlangıç ya da bitişle olup olmadığını söyler. Belgelere göre birden çok seçeneği demet olarak verebilirsiniz:

if dosya_adi.endswith(('.csv', '.xlsx')): print('Tablo dosyası')

Sayım için count, büyük küçük harfe bakmadan karşılaştırmak için önce lower ya da casefold uygulamak gerekir. Hata yapmamak için ham metni aramadan önce strip ve lower ile normalleştirmek iyi bir alışkanlıktır.

Metni karakter karakter gezmek de mümkündür; string de bir dizi olduğu için for döngüsü her harfi sırayla verir:

for harf in kelime: print(harf)

Karakter türünü sorgulayan isalpha, isdigit gibi metotlar da kullanışlıdır; örneğin bir girdinin yalnız rakamlardan oluşup oluşmadığını döndürdükleri doğru ya da yanlış değerle kontrol edersiniz.

f-string ile metin biçimlendirme

f-string, metnin önüne f harfi koyarak yazılan biçimli metin ifadesidir. Küme parantezi içine yazılan ifadeler değerleriyle değiştirilir.

ad = 'Ayşe' mesaj = f'Merhaba {ad}, hoş geldiniz.' boy = f'{ad} adında {len(ad)} harf var'

Parantez içinde değişken, işlem ya da fonksiyon çağrısı yazabilirsiniz. İki nokta üst üsteden sonra biçim belirteci verilir; belirteç değerin nasıl gösterileceğini belirler. Belgelere göre ondalık hane sayısı ve en küçük alan genişliği gibi ayarlar yapılabilir. Hane sayısını bir değişkenle de verebilirsiniz:

f'{oran:.{hane}f}' f'{ad:{genislik}}'

Hata ayıklarken kullanışlı bir özellik de eşittir belirtecidir: f'{ad=}' yazarsanız çıktıda ifadenin kendisi ve değeri birlikte görünür. Dönüştürme bayrakları (!s, !r, !a) değeri biçimlemeden önce metne çevirir.

Eski yöntem olan str.format da aynı biçim belirteçlerini destekler, ama değerleri ayrıca vermek gerekir. Yeni kodda f-string genellikle daha kısa ve okunaklıdır; ancak biçim şablonu kodun dışından geliyorsa, örneğin dosyadan okunuyorsa, str.format kullanılır.

Sık yapılan hatalar

  • Metot sonucunu atamamak: strip, replace ve lower orijinal metni değiştirmez.
  • strip'i önek silme sanmak: strip karakter kümesiyle çalışır, tam önek için removeprefix kullanın.
  • Sayıları join ile birleştirmeye çalışmak: önce str ile metne çevirin.
  • Büyük listelerde + ile metin eklemek: join kullanın.
  • Ayraçsız split ile ayraçlı split'i karıştırmak: boş parçalar farklı davranır.
  • Metin ile sayıyı + ile birleştirmek: TypeError alırsınız, f-string bunu kolaylaştırır.
  • Türkçe harflerde lower ve upper sonucuna güvenmek: İ ve ı için sonuçları deneyin.

Bu beceriyi Mindset programlarında nerede çalışırsınız

Python ile Programlama Eğitimi, Python'da Temel Veri Tipleri modülünde metinleri ve temel dönüşümleri işler. Müşteri listesi, rapor çıktısı ya da log dosyası gibi metin ağırlıklı verilerle çalışan analistler ve otomasyon betiği yazanlar için string metotları, günlük işin en sık kullanılan araçlarından biridir.

İlgili Mindset programı

Python ile Programlama Eğitimi

Sık sorulanlar

Sık sorulan sorular

String'i değiştiremiyorsam nasıl düzenlerim?

Değiştirmek yerine istediğiniz hâlini üretip yeni bir değişkene atarsınız. strip, replace ve dilimleme gibi işlemler yeni bir metin döndürür; orijinal metin olduğu gibi kalır. Metin üzerinde çok sayıda değişiklik gerekiyorsa parçalara bölüp listeyle çalışıp join ile geri birleştirebilirsiniz.

split ile ayraç vermek ve vermemek arasındaki fark nedir?

Ayraç verilmezse ardışık boşluklar tek ayraç sayılır ve uçlardaki boş parçalar atılır. Ayraç verirseniz her ayraç ayrı bir kesme noktasıdır; ardışık ayraçlar arasında boş metin oluşur. Boşluklarla ayrılmış metin için ayraçsız kullanım çoğu zaman daha temizdir.

f-string mi format mı kullanmalıyım?

Şablon kodun içindeyse f-string daha kısa ve okunaklıdır. Şablon dışarıdan, örneğin bir dosyadan ya da ayarlardan geliyorsa str.format gerekir. İkisi de aynı biçim belirteçlerini destekler, bu yüzden birinden diğerine geçmek kolaydır.

Büyük küçük harf duyarsız karşılaştırmayı nasıl yaparım?

İki metni de lower ile küçük harfe çevirip karşılaştırabilirsiniz. Belgeler, bu amaç için daha kapsamlı olan casefold metodunu da anar. Türkçe metinlerde İ ve ı harfleri için sonucu örnek verilerle doğrulayın.

Metindeki belirli bir karakteri nasıl silerim?

replace ile karakteri boş metinle değiştirebilirsiniz. Yalnızca uçlardaki karakterleri silmek istiyorsanız strip, belirli bir öneki ya da soneki silmek istiyorsanız removeprefix ve removesuffix kullanın. Hepsi yeni bir metin döndürür, orijinali değiştirmez.

Python String Metotları ve f-string Kullanımı