Veri Bilimi İçin Python Notları-4: Python’da String Değişkenler – 1

V

1. Python’da Karakterleri Ayrıştırmak

Python’da string değişkenler array (seri/dizi) mantığı kullanılarak karakterlerine ayrıştırılabilir.

Not: Arrayler’den ileride bahsedilecektir. Şimdilik aşağıdaki kodların temel işleyişini kavramaya odaklanmanız yeterli olacaktır.

x = "Python"
print(x[0]) #Sonuç: P
print(x[1]) #Sonuç: y
print(x[2]) #Sonuç: t
print(x[3]) #Sonuç: h
print(x[4]) #Sonuç: o
print(x[5]) #Sonuç: n
#print(x[6]) #Sonuç: IndexError: string index out of range

Python’da köşeli parantezle ifade edilen arraylerin indeks numarası daima sıfırdan başlar. “Python” kelimesi 6 karaktere sahiptir. İlk karakter sıfır ile ifade edildiği için son karakter olan “n” 5 ile ifade edilmiştir. Eğer arrayde, değişkende (örnekte x değişkeninde) yer almayan (örneğe göre print(x[6]) gibi) bir indeks numarası kullanılırsa, “IndexError: string index out of range” şeklinde bir hata alınır.

Benzer şekilde bir string değişkeni karakterlerine ayrıştırmak için aşağıdaki gibi basit bir döngü de kullanılabilir.

for x in "Python":
  print(x) 
#Sonuç:
# P
# y
# t
# h
# o
# n

#Yukarıdaki kodu şu şekilde de yazabilirsiniz. Aynı sonucu verecektir.

'''
y="Python"
for x in y:
  print(x)
'''

2. Python’da Toplam Karakter Sayısı (len metodu)

Python’da string bir değişkenin toplam karakter sayısını elde etmek için “len” metodundan yararlanılabilir.

x = "Python"
print(len(x)) # Sonuç: 6

3. Python’da Karakter Kontrolü Yapmak (in, not in, endswith, startswith metotları)

Python’da string bir değişkende bir ifadenin varlığını kontrol etmek için “in” metodu kullanılabilir. Kontrol edilecek ifade bir harf olabileceği gibi bir karakter dizisi de olabilir.

myText = "Makine öğrenmesi, veri bilimi ya da yapay zeka alanında kariyer yapmak için Python öğrenebilirsiniz."
print("veri bilimi" in myText) #Sonuç: True
print("makine öğrenmesi" in myText) #Sonuç: False
print("Makine öğrenmesi" in myText) #Sonuç: True
print("CSS" in myText) #Sonuç: False
print("ğ" in myText) #Sonuç: True

Not: Python’un büyük-küçük harf duyarlılığına sahip olduğunu hatırlayın. Bu yüzden yukarıdaki örnekte myText değişkeni içinde “makine öğrenmesi” ifadesi bulunamadığı için “False” değerini döndürdü.

Sonucun true ya da false olduğu durumu aşağıdaki şekilde konsola yazdırabilirsiniz.

Not: Konsol, kodları yazdıktan sonra çalıştırdığınızda sonucun görüntülendiği alandır. Spyder, pycharm, visual studio gibi gelişmiş bir IDE kullanıyorsanız, konsolu IDE’nin alt veya yan tarafında görebilirsiniz.

myText = "Makine öğrenmesi, veri bilimi ya da yapay zeka alanında kariyer yapmak için Python öğrenebilirsiniz."
if "veri bilimi" in myText: # Yani true ise koşulun içine gir
     print("Evet, değişkende 'veri bilimi' ifadesi var.") #Sonuç: Evet, değişkende 'veri bilimi' ifadesi var.
     print("Evet, değişkende" + """ "veri bilimi" """ + "ifadesi var.") #Sonuç: Evet, değişkende "veri bilimi" ifadesi var.

print("________\n")

# Yukarıdaki kod bloğu şu şekilde de ifade edilebilir.
myText = "Makine öğrenmesi, veri bilimi ya da yapay zeka alanında kariyer yapmak için Python öğrenebilirsiniz."
x="veri bilimi" in myText # Örneğe göre true değerini alacaktır.
if x==True: # "==" ifadesi "eşitse" anlamına gelir
    print("Evet, değişkende 'veri bilimi' ifadesi var.") #Sonuç: Evet, değişkende 'veri bilimi' ifadesi var.
    print("Evet, değişkende" + """ "veri bilimi" """ + "ifadesi var.") #Sonuç: Evet, değişkende "veri bilimi" ifadesi var. 

Yukarıda aynı görevi yerine getiren iki kod bloğu vardır. İkinci kısımda tek farklılık true/false değerinin bir x değişkenine atanması ve “if” koşulunun “True” değerine eşitlenerek yapılmasıdır. İlk blokta kodlar, “if” koşuluna “True” değerini arka planda kendisi eşitlemektedir.

Yukarıda vurgulanması gereken bir diğer nokta da sonucun içinde yer alan ve string bir değer olan ‘veri bilimi’ ifadesinin tek denden (tırnak) ve çift denden (tırnak) işareti kullanılarak konsola yazdırılmasıdır.

Eğer string bir değişkende aranan ifade bulunamaz ise sonucu konsola şu şekilde yazdırabiliriz.

myText = "Makine öğrenmesi, veri bilimi ya da yapay zeka alanında kariyer yapmak için Python öğrenebilirsiniz."
x="CSS" in myText # Örneğe göre false değerini alacaktır.
if x==True: # "==" ifadesi "eşitse" anlamına gelir
    #Yukarıdaki koşulun sağlanması durumunda çalışacak kısım.  
    print("Evet, değişkende" + """ "veri bilimi" """ + "ifadesi var.") #Sonuç: Evet, değişkende "veri bilimi" ifadesi var.
else:
    #Yukarıdaki koşulun sağlanmaması durumunda çalışacak kısım.  
    print("Hayır, değişkende" + """ "CSS" """ + "ifadesi yoktur.") #Sonuç: Hayır, değişkende "CSS" ifadesi yoktur.

Yukarıdaki yöntemden farklı olarak string bir değişkende aranan ifade bulunamaz ise “not in” metodunu kullanarak sonucu konsola şu şekilde de yazdırabiliriz.

myText = "Makine öğrenmesi, veri bilimi ya da yapay zeka alanında kariyer yapmak için Python öğrenebilirsiniz."
if "CSS" not in myText: # Yani true ise koşulun içine gir: CSS ifadesinin bulunamaması "not" keywordünden dolayı TRUE değerini döndürecektir.
     print("Hayır, değişkende" + """ "CSS" """ + "ifadesi yoktur.") #Sonuç: Hayır, değişkende "CSS" ifadesi yoktur. 

Alternatif bir yöntem olarak “endswith” metodunu da kullanabiliriz.

myText = "Makine öğrenmesi, veri bilimi ya da yapay zeka alanında kariyer yapmak için Python öğrenebilirsiniz."
x = myText.endswith("öğrenebilirsiniz.") #True ya da false değerini döndürür. Örneğe göre true değerini döndürecektir.
if x==True: # "==" ifadesi "eşitse" anlamına gelir
    print("Evet, değişkenin sonunda 'öğrenebilirsiniz.' ifadesi var.") #Sonuç: Evet, değişkenin sonunda 'öğrenebilirsiniz.' ifadesi var
    print("Evet, değişkenin sonunda" + """ "öğrenebilirsiniz." """ + "ifadesi var.") #Sonuç: Evet, değişkenin sonunda "öğrenebilirsiniz " ifadesi var. 

print()

myText = "Makine öğrenmesi, veri bilimi ya da yapay zeka alanında kariyer yapmak için Python öğrenebilirsiniz."
print(len(myText)) #Sonuç: 100

print()

x = myText.endswith("öğrenebilirsiniz.", 70,100) #True ya da false değerini döndürür. Örneğe göre true değerini döndürecektir.
if x==True: # "==" ifadesi "eşitse" anlamına gelir
    print("Evet, değişkenin 70 ile 100. karakterleri arasında 'öğrenebilirsiniz.' ifadesi var.") #Sonuç: Evet, değişkenin 70 ile 100. karakterleri arasında 'öğrenebilirsiniz.' ifadesi var.
    print("Evet, değişkenin 70 ile 100. karakterleri arasında" + """ "öğrenebilirsiniz." """ + "ifadesi var.") #Sonuç: Evet, değişkenin 70 ile 100. karakterleri arasında “öğrenebilirsiniz.” ifadesi var.

Ancak yukarıdaki yöntemin metnin içinde değil, sonunda bir arama yaptığına dikkat edilmelidir. Diğer bir ifadeyle “endswith” metodu değişkenin sonunda geçen ifadeleri kontrol etmek için kullanılabilir. İlk bölüm aramayı metnin başından sonuna, ikinci bölüm ise aramayı metnin 70 ile 100. karakterleri arasında yapar.

Yukarıdaki yöntem ile aynı mantığa sahip “startswith” metodunu aşağıda inceleyebilirsiniz.

myText = "Makine öğrenmesi, veri bilimi ya da yapay zeka alanında kariyer yapmak için Python öğrenebilirsiniz."
x = myText.endswith("öğrenebilirsiniz.") #True ya da false değerini döndürür. Örneğe göre true değerini döndürecektir.
if x==True: # "==" ifadesi "eşitse" anlamına gelir
    print("Evet, değişkenin sonunda 'öğrenebilirsiniz.' ifadesi var.") #Sonuç: Evet, değişkenin sonunda 'öğrenebilirsiniz.' ifadesi var
    print("Evet, değişkenin sonunda" + """ "öğrenebilirsiniz." """ + "ifadesi var.") #Sonuç: Evet, değişkenin sonunda "öğrenebilirsiniz " ifadesi var. 

print()

myText = "Makine öğrenmesi, veri bilimi ya da yapay zeka alanında kariyer yapmak için Python öğrenebilirsiniz."
print(len(myText)) #Sonuç: 100

print()

x = myText.endswith("öğrenebilirsiniz.", 70,100) #True ya da false değerini döndürür. Örneğe göre true değerini döndürecektir.
if x==True: # "==" ifadesi "eşitse" anlamına gelir
    print("Evet, değişkenin 70 ile 100. karakterleri arasında 'öğrenebilirsiniz.' ifadesi var.") #Sonuç: Evet, değişkenin 70 ile 100. karakterleri arasında 'öğrenebilirsiniz.' ifadesi var.
    print("Evet, değişkenin 70 ile 100. karakterleri arasında" + """ "öğrenebilirsiniz." """ + "ifadesi var.") #Sonuç: Evet, değişkenin 70 ile 100. karakterleri arasında “öğrenebilirsiniz.” ifadesi var.

4. Python’da Soldan Sağa Karakter Aralığı

Python’da string değişkenler array kullanılarak karakterlerine ayrıştırılabildiği gibi aynı yöntemle string değişkenlerin karakter aralığı da elde edilebilir.

x = "Python harika!"
print(x[0:4]) #Sonuç: Pyth
print(x[4:13]) #Sonuç: on harika

Daha önce de belirtildiği gibi Python’da indeks numarası sıfırdan başlar. “Python harika!” string ifadesi (boşluk dahil) 14 karakterden oluşmaktadır. İlk 4 karakteri (Pyth ifadesini) x[0:4], sonraki 9 karakteri ise (“on harika” ifadesi) x[4:13] arrayi ile elde ettik.

Üçüncü bir parametre kullanılarak aşağıda gösterildiği gibi karakter aralarında atlama yapılarak gezinilebilir.

x = "Python harika!"
print(x[0:6:2]) #Sonuç: Pto # Karakterler arasında birer karakter atlama yapar.
print(x[0:13:3]) #Sonuç: Ph ra # Karakterler arasında ikişer karakter atlama yapar.

Aşağıdaki yöntemle de string değişkenlerin “en baştan” soldan sağa doğru karakterleri elde edilebilir.

x = "Python harika!"
print(x[:4]) #Sonuç: Pyth
print(x[:10]) #Sonuç: Python har

Yukarıdaki kod aşağıdaki şekilde kullanılarak string değişkenin “belirli bir başlangıçtan sonra” soldan sağa doğru karakterleri elde edilebilir.

x = "Python harika!"
print(x[4:]) #Sonuç: on harika!
print(x[8:]) #Sonuç: arika!

5. Python’da Sağdan Sola Karakter Aralığı

Arraye eksi değerler vermek, string bir değişkende karakterler arasında sağdan sola doğru hareket edilmesini ifade eder.

x = "Python harika!"
print(x[0:-8]) #Sonuç: Python
print(x[7:-3]) #Sonuç: hari
print(x[-7:-3]) #Sonuç: hari
print(x[0:-1]) #Sonuç: Python harika #Sondaki ünlem işareti kaldırılmış oldu.

Not: Veri dönüştürme süreçlerinde array’lerin yukarıdaki özellikleri, özellikle de x[0:-1] gibi negatif indekslerin yer aldığı array’ler sık sık kullanılır. Yukarıda görüldüğü gibi basit bir mantığı vardır. Ancak önemli olduğunun altını çizmekte yarar var.

6. Python’da Verilerin Sağına ve Soluna Boşluk vb. Karakter Eklemek (rjust, ljust, center metotları)

String verilere sağdan sola veya soldan sağa doğru aşağıda gösterildiği gibi boşluk, -, rakam vb. karakter ekleyebilirsiniz.

myText = "Python"
x = myText.rjust(10)
print(x, "sizce de harika değil mi?") #Sonuç:    Python sizce de harika değil mi?
x = myText.rjust(10, " ")
print(x, "sizce de harika değil mi?") #Sonuç:    Python sizce de harika değil mi?
x = myText.rjust(10, "-")
print(x, "sizce de harika değil mi?") #Sonuç:----Python sizce de harika değil mi?

print("___________\n")

myText = "Python"
x = myText.ljust(10)
print(x, "sizce de harika değil mi?") #Sonuç:Python     sizce de harika değil mi?
x = myText.ljust(10, " ")
print(x, "sizce de harika değil mi?") #Sonuç:Python     sizce de harika değil mi?
x = myText.ljust(10, "-")
print(x, "sizce de harika değil mi?") #Sonuç:Python---- sizce de harika değil mi?


print("___________\n")

myText = "Python"
x = myText.center(10)
print(x, "sizce de harika değil mi?") #Sonuç:  Python   sizce de harika değil mi?
x = myText.center(10, " ")
print(x, "sizce de harika değil mi?") #Sonuç:  Python   sizce de harika değil mi?
x = myText.center(10, "-")
print(x, "sizce de harika değil mi?") #Sonuç:--Python-- sizce de harika değil mi?

#center indeksi 10,"Python" ifadesinin karakter sayısı olan 6'dan büyük olduğu için "Python" ifadesinin soluna ve sağına 2'şer adet, toplam 4 adet - (veya boşluk) eklendi.

7. Python’da Değiştir Metodu (replace metodu)

Python’da replace metodu ile karakterleri veya karakter öbeklerini, başka bir karakter veya karakter öbekleri ile aşağıda gösterildiği gibi değiştirebiliriz.

x = "Python harika!"
print(x.replace("h", "H", 1)) #Sonuç: Python harika!

Yukarıda “Python harika!” ifadesinde yer alan “h” harfi “H” harfi ile değiştirildi. Bu işlem sadece bir kez yapıldığı için “harika” ifadesinde yer alan “h” harfinin “H” harfi ile değiştirilmediğini görebiliriz. x değişkeninde yer alan tüm “h” harflerinin “H” harfleri ile değiştirilmesi için (x değişkeninde iki tane h harfi olduğundan) tekrar bölümüne 1 yerine 2 yazmalıyız.

x = "Python harika!"
print(x.replace("h", "H", 2)) #Sonuç: Python Harika!

Ancak yukarıdaki çözüm genel bir çözüm değildir. Bir değişkende (örneğin h harfinin H harfi ile değiştirilmesinde olduğu gibi) kaç kez tekrarlı olarak “replace” komutunun çalışacağını her zaman bilemeyebiliriz. “replace” komutunun tekrar sayısını x değişkeninin karakter sayısına eşitlersek herhangi bir değişkendeki tüm h harflerini eksiksiz bir şekilde H harfine dönüştürebiliriz.

x = "Python harika!"
print(x.replace("h", "H", len(x))) #Sonuç: Python Harika!

x = "Python’da her şey harika!"
print(x.replace("h", "H", len(x))) #Sonuç: Python’da Her şey Harika!

Not: “replace” metodu farklı problemlere farklı yöntemlerle uygulanabilir. “replace” metodunun programlamada en sık kullanılan komutlardan biri olduğunu vurgulamakta yarar var.

8. Python’da Büyük-Küçük Harf Dönüşümü ve Kontrolü (upper, lower, isupper, islower metotları)

Python’da alfabetik karakterlerin tümünü aşağıda gösterildiği gibi büyük ya da küçük harfe dönüştürebiliriz.

x = "Python harika!"
print(x.upper()) #Sonuç: PYTHON HARIKA!
print(x.lower()) #Sonuç: Python harika!

print()

x = "Python muhteşem!"
print(x.upper()) #Sonuç: PYTHON MUHTEŞEM!
print(x.lower()) #Sonuç: Python muhteşem!

Dikkat edilirse Türkçe karakter dönüşümünde genel olarak sorun yoktur. Ancak I-ı ve i-İ (ya da ı-I ve i-İ) dönüşümünde sorun vardır. Bu sorunu aşağıdaki şekilde aşabiliriz.

x = "Python harika!"
a=x.upper()
print(a.replace("I", "İ", len(a))) #Sonuç: PYTHON HARİKA!

Ancak yukarıdaki sorun kullanılan string değişken özelinde bir çözümdür. Aynı çözümü aşağıdaki örneğe uyguladığımızda genel bir çözüme ulaşamadığımızı görebiliriz.

x = "Iğdır harika!"
a=x.upper()
print(a.replace("I", "İ", len(a))) #Sonuç: İĞDİR HARİKA!

Yukarıda görüldüğü gibi “ı” harfi “upper” komutu ile aslında doğru bir şekilde “I” harfine dönüştürülmesine rağmen, “replace” komutundan dolayı “I” harfleri “İ” harfine dönüştürüldü. “HARİKA” kelimesi için doğru, ancak “İĞDİR” kelimesi için yanlış bir çözüm oldu.

Küçük harf ı ve i harflerinin I ve İ olacak şekilde büyük harflere dönüştürebilen genel bir çözümü için aşağıdaki örneği inceleyebilirsiniz.

x = "Iğdır harika!"
x=x.replace("i", "İ", len(x))
x=x.replace("ı", "I", len(x))
a=x.upper()
print(a) #Sonuç: IĞDIR HARİKA!

Sorunun çözümü için ikinci ve üçüncü satırlarda (“upper” dönüşümünden önce) i ve ı harfi sırasıyla İ ve I harfi ile “replace” edildi, sonra diğer harfler “upper” metodu ile büyük harfe dönüştürüldü. Böylece sorunumuz, “upper” metodu büyük harflerle “replace” edilen İ ve I harfleri için ikinci bir dönüştürme yapmadığı için çözülmüş oldu.

Not: Önce i ve ı harflerinin İ ve I harfleri ile değiştirildiğine, sonra “upper” metodunun kullanıldığına dikkat edin. Aksi durumda i ve ı harflerinin büyük harflere dönüşümü sırasında yukarıdaki aynı sorunla karşılaşılır.

Yukarıdaki benzer çözümü, “lower” metoduyla yaşanabilecek İ ve I harflerinin i ve ı harflerine dönüşümü sırasında karşılaşılacak problemin çözümü için aşağıdaki şekilde uygulayabiliriz.

#Sorun:
x = "IĞDIR HARİKA!"
a=x.lower()
print(a) #Sonuç: iğdir hari̇ka!

#Çözüm:
x = "IĞDIR HARİKA!"
x=x.replace("İ", "i", len(x))
x=x.replace("I", "ı", len(x))
a=x.lower()
print(a) #Sonuç: ığdır harika!

Not: “lower” metodu yerine harfleri küçük harfe dönüştürme konusunda daha agresif/zorlayıcı olan “casefold” metodu da kullanılabilir.

Karakterlerin tümünün büyük ya da küçük harflerden oluşup oluşmadığını kontrol ettirmek için aşağıdaki örnekleri inceleyebilirsiniz.

x = "Python harika!"
a=x.isupper()
print(a) #False
if a==True:
    print("Karakterlerin tümü büyük harflerden oluşuyor.") 
else:
    print("Karakterlerin tümü büyük harflerden oluşmuyor.") #Sonuç: Karakterlerin tümü büyük harflerden oluşmuyor.

print("___________\n")


x = "PYTHON HARİKA!"
a=x.isupper()
print(a) #True
if a==True:
    print("Karakterlerin tümü büyük harflerden oluşuyor.") #Sonuç: Karakterlerin tümü büyük harflerden oluşuyor.
else:
    print("Karakterlerin tümü büyük harflerden oluşmuyor.") 

print("___________\n")

x = "Python harika!"
a=x.islower()
print(a) #True
if a==True:
    print("Karakterlerin tümü küçük harflerden oluşuyor.") #Sonuç: Karakterlerin tümü küçük harflerden oluşuyor.
else:
    print("Karakterlerin tümü küçük harflerden oluşmuyor.") 

print("___________\n")


x = "Python harika!"
a=x.islower()
print(a) #False
if a==True:
    print("Karakterlerin tümü küçük harflerden oluşuyor.") 
else:
    print("Karakterlerin tümü küçük harflerden oluşmuyor.") #Sonuç: Karakterlerin tümü küçük harflerden oluşmuyor.

9. Python’da Sadece İlk Kelimenin İlk Karakterini Büyük Harf Yapmak (capitalize metodu)

Python’da string bir verinin ilk kelimesinin ilk harfini büyük, diğerlerini ise küçük harf yapmak için “capitalize” metodu kullanılabilir.

myText = "Python, \"Veri Bilimi\" Alanında Yaygın Bir Şekilde Kullanılıyor."
print(myText.capitalize()) #Sonuç: Python, "veri bilimi" alanında yaygın bir şekilde kullanılıyor.

10. Python’da Kelimelerin İlk Harflerini Büyük Harf Yapmak ve Kontrol Ettirmek (title, istitle metotları)

Python’da string verilerin ilk harflerini büyük, diğerlerini küçük harf yapmak için “title” metodu kullanılabilir.

myText = "Python, \"veri bilimi\" alanında yaygın bir şekilde kullanılıyor."
print(myText.title()) #Sonuç: Python, "Veri Bilimi" Alanında Yaygın Bir Şekilde Kullanılıyor.

Yukarıdaki işlemin kontrolü ise “istitle” metodu ile yapılabilir.

x = "Python, \"veri bilimi\" alanında yaygın bir şekilde kullanılıyor."
a = x.istitle()
print(a) #False
if a==True:
    print("Tüm kelimelerin ilk harfleri büyük harfle başlıyor.") 
else:
    print("Tüm kelimelerin ilk harfleri büyük harfle başlamıyor.") #Sonuç: Tüm kelimelerin ilk harfleri büyük harfle başlamıyor.

print("___________\n")

x = "Python, \"Veri Bilimi\" Alanında Yaygın Bir Şekilde Kullanılıyor."
a = x.istitle()
print(a) #TRue
if a==True:
    print("Tüm kelimelerin ilk harfleri büyük harfle başlıyor.") #Sonuç: Tüm kelimelerin ilk harfleri büyük harfle başlıyor.
else:
    print("Tüm kelimelerin ilk harfleri büyük harfle başlamıyor.") 

11. Python’da Veri İçinde Belirli Karakterleri Saymak (count metodu)

Python’da string bir değişkenin içinde geçen belirli bir karakteri veya ifadeyi saymak için “count” metodu kullanılabilir.

myText = "Python veri işlemeye elverişli yapısı ile veri bilimi ve veri analizi alanlarında yaygın bir şekilde kullanılıyor."
x = myText.count("veri")
print(x) #Sonuç: 4

Yukarıda “elverişli” kelimesi içinde geçen “veri” kelimesi de sayıldığı için sonuç 4 olmuştur. Bu sorunun çözümüne birazdan değinilecektir.

Not: “count” metodu yukarıda, “veri” ifadesindeki v-e-r-i şeklinde karakterleri değil, “veri” ifadesinin myText değişkeninde kaç kez geçtiğini sayar.

Belirli bir pozisyondan başlayıp belirli bir pozisyona kadar olan aralıktaki bir ifadeyi saydırmak için aşağıdaki örneği inceleyebilirsiniz.

myText = "Python veri işlemeye elverişli yapısı ile veri bilimi ve veri analizi alanlarında yaygın bir şekilde kullanılıyor."
x = myText.count("veri", 11, 30) #start: 11, end:30; yani soldan sağa doğru 11 ile 30. karakterler arasındaki veri kelimelerini say. 
print(x) #Sonuç: 1

Yukarıda “elverişli” kelimesinin de “veri” kelimesi olarak sayıldığından bahsedilmişti. Bağımsız bir şekilde “veri” kelimesini saymak istediğimiz varsayımında, sorunu çözmek için yukarıdaki kodu aşağıdaki şekilde değiştirebiliriz.

myText = "Python veri işlemeye elverişli yapısı ile veri bilimi ve veri analizi alanlarında yaygın bir şekilde kullanılıyor."
x = myText.count(" veri")
print(x) #Sonuç: 3
  

Bahsi geçen sorunu çözmek için kodlar, count metodu “veri” ifadesi için değil, (veri ifadesinin soluna bir adet boşluk ilave edilmiş formu olan) “ veri” ifadesi için çalışacak şekilde değiştirildi.

12. Python’da Boşlukları Kaldırmak ve Kontrol Etmek (strip, isspace, lstrip, rstrip metotları)

Python’da “strip” komutu ile string bir değişkenin başında ve sonunda bulunan tüm boşluklar aşağıda gösterildiği gibi kaldırılabilir.

x = "   Python harika!   "
#Boşluklar kaldırılmadan önce karakter sayısı
print(len(x)) #Sonuç: 20

#Baştaki ve sondaki boşlukları kaldır
x=x.strip()
print(x) #Sonuç: Python harika!

#Baştaki ve sondaki boşluklar kaldırıldıktan sonra karakter sayısı
print(len(x)) #Sonuç: 14
  

Yukarıdaki kodlar string bir değişkenin başındaki ve sonundaki boşlukları kaldırmasına rağmen, kelimelerin arasında birden fazla boşluk varsa onları kaldırmaz.

x = "   Python      harika!   "
#Boşluklar kaldırılmadan önce karakter sayısı
print(len(x)) #Sonuç: 25

#Baştaki ve sondaki boşlukları kaldır
x=x.strip()
print(x) #Sonuç: Python      harika!

#Baştaki ve sondaki boşluklar kaldırıldıktan sonra karakter sayısı
print(len(x)) #Sonuç: 19
  

Kelimeler arasında birden çok boşluk varsa, bunları kaldırmak için “strip” komutuyla birlikte “replace” komutu kullanılabilir. Diğer bir ifadeyle string değerin başında ve sonunda herhangi bir boşluk olmayacak, kelimeler arasında ise sadece birer boşluk olacak şekilde veriyi düzenlemek istiyoruz.

x = "   Python      harika!   "
#Boşluklar kaldırılmadan önce karakter sayısı
print(len(x)) #Sonuç: 25

#Baştaki ve sondaki boşlukları kaldır
x=x.strip()
#Kelimeler arasındaki boşlukları 1'e düşür.
i = 1
while i <= len(x): # i değeri x değişkeninin karakter sayısından küçük veya eşit olduğu sürece döngü devam edecektir.
    x=x.replace("  ", " ", 1)
    i += 1
    #i=i+1 ile i += 1 aynı ifadedir. Her döngüde i değerini 1 arttır anlamına gelir.
print(x) #Sonuç: Python harika!

#Baştaki ve sondaki boşluklar kaldırıldıktan ve kelimeler arasındaki boşluklar 1'e düşürüldükten sonra karakter sayısı
print(len(x)) #Sonuç: 14
  

Yukarıda ilk olarak “strip” komutu ile x değişkeninin başındaki ve sonundaki boşluklar kaldırıldı. İkinci aşamada ise kelimeler arasındaki boşlukların bire indirgenebilmesi için “while” döngüsü ile birlikte “replace” komutu kullanıldı. While döngüsünün dışında i değeri 1’den başlatıldı. i değeri x değişkeninin karakter sayısından büyük olmadığı sürece döngünün devam etmesi istendi. Her döngüde ise x değişkeni içinde yer alan çift boşluklar tek boşluğa düşürüldü. Sonraki adımda ise i değişkenine 1 ilave edildi. Süreç bu şekilde i değeri x değişkeninin karakter sayısından büyük olana kadar tekrarlandı. Sonuç olarak döngü süreci içinde kelimeler arasındaki çift boşluklar adım adım azaltılarak tek boşluğa düşürülmüş oldu.

Bir verinin tümüyle boşluklardan oluşup oluşmadığını kontrol etmek için aşağıdaki örneği inceleyebilirsiniz.

x = "   Python      harika!   "
a = x.isspace()
print(a) #False
if a==True:
    print("Karakterlerin tümü boşluklardan oluşuyor.") 
else:
    print("Karakterlerin tümü boşluklardan oluşmuyor.") #Sonuç: Karakterlerin tümü boşluklardan oluşmuyor.

print("___________\n")

x = "    "
a = x.isspace()
print(a) #False
if a==True:
    print("Karakterlerin tümü boşluklardan oluşuyor.") #Sonuç: Karakterlerin tümü boşluklardan oluşuyor.
else:
    print("Karakterlerin tümü boşluklardan oluşmuyor.") 
  

Bir verinin sadece solundaki ve/veya sağındaki boşlukları kaldırmak için “rstrip” ve/veya “lstrip” metotlarını kullanabilirsiniz.

x = "   Python harika!   "
#Boşluklar kaldırılmadan önce karakter sayısı
print(len(x)) #Sonuç: 20

#Sadece soldaki boşlukları kaldır
x=x.lstrip()
print(x) #Sonuç: Python harika!   

#Sadece soldaki boşluklar kaldırıldıktan sonra karakter sayısı
print(len(x)) #Sonuç: 17

print("___________\n")

x = "   Python harika!   "
#Boşluklar kaldırılmadan önce karakter sayısı
print(len(x)) #Sonuç: 20

#Sadece sağdaki boşlukları kaldır
x=x.rstrip()
print(x) #Sonuç:   Python harika!

#Sadece sağdaki boşluklar kaldırıldıktan sonra karakter sayısı
print(len(x)) #Sonuç: 17

13. Python’da Verileri Bölmek (split, rsplit, splitlines metotları)

Python’da “split” komutu ile string bir değişkenin içindeki bir karakter referans alınarak aşağıda gösterildiği gibi string ifadeler bölünebilir.

x = "Python harika!"
y = x.split(" ")
print(y) #Sonuç: ['Python', 'harika!']


x = "Python, harika!"
y = x.split(",")
print(y) #Sonuç: ['Python', 'harika!']
  

Liste değişkeni içindeki ([‘Python’, ‘harika!’] şeklindeki) sonuçları şu şekilde liste değişkeninden çıkartabiliriz

x = "Python harika!"
y = x.split(" ")
print(y[0]) #Sonuç: Python 
print(y[1]) #Sonuç: harika!

x = "Python, harika!"
y = x.split(",")
print(y[0]+"\n"+y[1]) 
#Sonuç:
#Python
# harika!


x = "Python, harika!"
#Kelimeler arasındaki boşlukları kaldır
i = 1
while i <= len(x): # i değeri x değişkeninin karakter sayısından küçük veya eşit olduğu sürece döngü devam edecektir.
    x=x.replace(" ", "", 1)
    i += 1
    #i=i+1 ile i += 1 aynı ifadedir. Her döngüde i değerini 1 arttır anlamına gelir.
print(x) #Sonuç: Python,harika!
y = x.split(",")
print(y[0]+"\n"+y[1]) 
#Sonuç:
#Python
#harika!
  

“split” metoduna aşağıda gösterildiği gibi maksimum bölünme sayısını ekleyebiliriz.

myText = "Volvo#Toyota#Audi#Opel"

#Bölünme 1 kez gerçekleşecek ve 2 elemanlı bir liste oluşacak.
x = myText.split("#", 1)
print(x) #Sonuç: ['Volvo', 'Toyota#Audi#Opel']

#Bölünme 2 kez gerçekleşecek ve 3 elemanlı bir liste oluşacak.
x = myText.split("#", 2)
print(x) #Sonuç: ['Volvo', 'Toyota', 'Audi#Opel']
  

“split” metodunda bölünme sayısı belirtilmez ise bölünme, split edilen referans karakter sayısı kadar olur.

myText = "Volvo#Toyota#Audi#Opel"

#Bölünme maksimum sayıda (# adedi kadar) gerçekleşecek ve # adedi+1 elemanlı bir liste oluşacak.
x = myText.split("#")
print(x) #Sonuç: ['Volvo', 'Toyota', 'Audi', 'Opel']
  

“split” metodunda bölünme kriteri belirtilmez ise boşluklara göre bölünme işlemi gerçekleştirilir.

myText = "Python, mate,matiksel, işlemler için, çok kullan,ışlı."
x = myText.split()
print(x) #Sonuç: ['Python,', 'mate,matiksel,', 'işlemler', 'için,', 'çok', 'kullan,ışlı.']
  

Split metodunu tüm değerler için çalıştırmak yerine “rsplit” metodunu kullanarak sağdan sola doğru sınırlandırarak da çalıştırabiliriz.

x = "Python harika değil mi?"
y = x.split(" ")
print(y) #Sonuç:['Python', 'harika', 'değil', 'mi?']
#'Python' 0. eleman, 'harika' 1. eleman, 'değil' 2. eleman, 'mi? ise 3. elemandır. Sonuç 4 elamanlı bir listedir.

x = "Python harika değil mi?"
y = x.rsplit(" ")
print(y) #Sonuç:['Python', 'harika', 'değil', 'mi?']
#rsplit metodu, yukarıdaki gibi kısıtsız bir şekilde kullanıldığında split metodu ile aynı değeri döndürür.

#Ancak rsplit metodu, aşağıdaki gibi başlangıç pozisyonu belirtilerek kullanıldığında split metodundan farklı bir değer döndürür.
#Başlangıç pozisyonu, aşağıdaki örnekte sağdan sola doğru x değerinin 1. boşluğun pozisyonu itibarıyladır; 1. karakterin pozisyonu itibarıyla değildir.
x = "Python harika değil mi?"
y = x.rsplit(" ", 1)
print(y) #Sonuç:['Python harika değil', 'mi?']
#'Python harika değil'  0. eleman, 'mi?' ise 1. elemandır. Sonuç 2 elemanlı bir listedir.

x = "Python harika değil mi?"
y = x.rsplit(" ", 2)
print(y) #Sonuç:['Python harika', 'değil', 'mi?']
#'Python harika'  0. eleman, 'değil' 1. eleman, 'mi?' ise 2. elemandır. Sonuç 3 elemanlı bir listedir.
  

Kelimeler/söz öbekleri şeklinde değil de cümleler şeklinde (aslında breakline’lara göre) string ifadeleri bölmek ve liste değişkenlerine atamak için “splitlines” metodundan yararlanılabilir.

myText = "Python öğrenmek çok eğlencelidir.\nAma öğrenirken pratik yapmalısınız.\nPratik yaparsanız Python’da hızlı bir şekilde ilerleyebilirsiniz."
print(myText)
#Sonuç:
#Python öğrenmek çok eğlencelidir.
#Ama öğrenirken pratik yapmalısınız.
#Pratik yaparsanız Python’da hızlı bir şekilde ilerleyebilirsiniz.

x = myText.splitlines()
print(x) #Sonuç: ['Python öğrenmek çok eğlencelidir.', 'Ama öğrenirken pratik yapmalısınız.', 'Pratik yaparsanız Python’da hızlı bir şekilde ilerleyebilirsiniz.']
#Üç elemanlı bir liste oluşturuldu.

print("___________\n")

#splitlines varsayılan olarak false değeri sahiptir. Bu yüzden "\n" breakline’lar kaldırılır.
#"\n" linebreaklarının kaldırılmaması için splitlines metoduna aşağıdaki gibi true değerini verebilirsiniz.
myText = "Python öğrenmek çok eğlencelidir.\nAma öğrenirken pratik yapmalısınız.\nPratik yaparsanız Python’da hızlı bir şekilde ilerleyebilirsiniz."
print(myText)
#Sonuç:
#Python öğrenmek çok eğlencelidir.
#Ama öğrenirken pratik yapmalısınız.
#Pratik yaparsanız Python’da hızlı bir şekilde ilerleyebilirsiniz.

x = myText.splitlines(True)
print(x) #Sonuç: ['Python öğrenmek çok eğlencelidir.\n', 'Ama öğrenirken pratik yapmalısınız.\n', 'Pratik yaparsanız Python’da hızlı bir şekilde ilerleyebilirsiniz.']
#Üç elemanlı bir liste oluşturuldu. Elemanların her birinde "\n" breakline ifadelerinin yer aldığına dikkat edin.
  

13. Python’da Verileri Birleştirmek (+ ve % operatörü ile f string ve template yöntemleri)

Python’da string ifadeler “+” operatörü ile birleştirilebilir.

x = "Python"
y = "Harika!"
z = x + y
print(z) #Sonuç: PythonHarika!
  

Birleştirilen kelimelerin arasına boşluk eklemek için aşağıdaki örneği inceleyebilirsiniz.

x = "Python"
y = "Harika!"
z = x + " " + y
print(z) #Sonuç: Python Harika!
  

Python’da string ifadeler aşağıda gösterildiği gibi f string metodu adı verilen yöntemle de birleştirilebilir.

yas = 37; isim = "İshak"

# f string metoduyla da birleştirmek.
myText1 = f"Adım {isim} ve ben {yas} yaşındayım."
print(myText1) #Sonuç: Adım İshak ve ben 37 yaşındayım.
  

Python’da string ifadeler aşağıda gösterildiği gibi % operatörü yöntemiyle de birleştirilebilir.

yas = 37; isim = "İshak"

# Eski Tarz/Okul (Old Style or School) olarak bilinen % operatörü (%d=integer,%s=string, %f=float) ile birleştirmek.
myText1 = "Adım %s ve ben %d yaşındayım." %(isim, yas)
print(myText1) #Sonuç: Adım İshak ve ben 37 yaşındayım.

print()

fiyat = 75; course_name = "Python"

# Eski Tarz/Okul (Old Style or School) olarak bilinen % operatörü (%d=integer,%s=string, %f=float) ile birleştirmek.
myText1 = "Yaz kampı %s kursları sadece $%f ile indirimde!" %(course_name, fiyat) #ondalıklar varsayılan hane kadar
myText2 = "Yaz kampı %s kursları sadece $%.2f ile indirimde!" %(course_name, fiyat) #ondalıklar 2 haneli / %.3f ise ondalıklar 3 haneli olur.
print(myText1) #Sonuç: Yaz kampı Python kursları sadece $75.000000 ile indirimde!
print(myText2) #Sonuç: Yaz kampı Python kursları sadece $75.00 ile indirimde!

Python’da string ifadeler aşağıda gösterildiği gibi template yöntemiyle de birleştirilebilir. Template yöntemini kullanabilmek için aşağıda gösterildiği gibi string modülünü import etmeniz gerekir.

from string import Template
isim = "İshak"
yas = 37
myText1 = Template("Adım $isim ve ben $yas yaşındayım.")
print(myText1.substitute(isim = isim, yas = yas)) #Sonuç: Adım İshak ve ben 37 yaşındayım.

 

 

İshak Kutlu, Veri Bilimi İçin Python Notları

Yorum Yap

İshak Kutlu

Veri & Otomasyon Uzmanı

Kurumsal iş akışlarını düzenleyen veri odaklı otomasyon sistemleri ve makine öğrenmesi tabanlı çözümler geliştirir. Gerçek operasyonel süreçler için ölçeklenebilir ve izlenebilir yapılar tasarlar.

YouTube   YouTube   YouTube   YouTube