LeGoLaS
Onursal Üye
- Üyelik Tarihi
- 1 Ağu 2008
- Konular
- 4,885
- Mesajlar
- 16,461
- MFC Puanı
- 15,790
Python KARAKTER DİZİLERİ
Bu bölümde birçok programlama dilinde olduğu gibi Python dilinde de sıkça kullanılan Karakter Dizilerinden (string) bahsedeceğiz.
Python'da karakter dizilerini ifade etmek için yapmamız gereken tek şey, ifademizi tırnak ("") içinde belirtmektir. Python'da tırnak içerisinde belirtilen her şey karakter dizisi
olarak kabul edilir.Bir örnek vermemiz gerekirse;
Şimdi bu ifadenin türünü öğrenmek için daha önceden öğrendiğimiz type fonksiyonumuzu kullanalım.
[/COLOR]
Gördüğümüz gibi tırnak içerisinde belirttiğimiz "Python" ifadesinin türü str yani stringtir. Peki ifademizi tırnak içerisinde yazmasaydık ne olurdu? Deneyip görelim;
Gördüğümüz üzere ifademizi tırnak içinde yazmadığımız için derleyici onu string olarak görmedi ve tanımlanamadığına dair hata verdi.
Tırnak içerisinde yazdığımız her ifade string olarak tanımlanır dedik. Bunu şöyle bir örnekle daha iyi kavrayabiliriz.
Burada a değişkeninin türü integer olarak verildi. Peki biz bu ifadeyi tırnak içerisinde yazarsak ne olur?
a değişkenine atadığımız değeri tırnak içerisinde gönderdiğimiz için type'ı str yani string'tir. Buradan da anlaşılacağı üzere Python'da tırnak içerisinde girilen her değer string'tir.
Aynı ifadeyi şöyle de yazabilirdik.
Burada da type fonksiyonunun içinde a değişkenini string olarak çağırmış olduk.
Yazdığımız stringleri ekrana çıkartmak için çok alışkın olduğumuz "print" komutunu kullanacağız.
Burada derleyici iki iş yapıyor. Birincisi tırnak içerisinde yazılan stringi okuyor. İkincisi "print" fonksiyonuyla okuduğu string'i ekrana yazdırıyor.Biz bu string'i
şeklinde yazdığımızda da görebiliyoruz ancak derleyici burda sadece string'i okuma işlemini yapıyor ekrana yazdırmıyor. İlerde kodlarımızı bir dosyaya kaydedip çalıştırdığımızda
yukarıdaki kodun ekrana hiçbir şey yazdırmadığını göreceksiniz.
Karakter dizilerini kullanırken dikkat etmeniz gereken en önemli nokta tırnak işareti kullanımıdır. Stringimizi yazarken ister çift tırnak(""), ister tek tırnak(''), istersek
üç tırnak("""""") kullanabiliriz. Hangi tırnak işaretini kullandığımızın çok da bir önemi yoktur. Önemli olan başladığımız tırnak işaretini aynı şekilde kapatmamızdır.
Gelin örneklerimize çift tırnak kullanımı ile başlayalım.
Burada çift tırnak kullandığımızda yazdığımız string ifadesi hata vermeden çalıştı. Peki bunu tek tırnakla yazarsak
şeklinde bir hata ile karşılaşırız. Bunun sebebi "Pyhton'da" ifadesindeki tek tırnak işaretinden kaynaklanıyor. Derleyici burada kullandığımız tek tırnağı başlangıçta açtığımız
tırnağın kapanışı olarak düşündüğünden, ifadenin devamını okumakta sorun yaşar ve hata verir. Bunu ortadan kaldırmak için çift tırnak kullanabileceğimiz gibi
"\" işaretini de kullanabiliriz. Eğer ekrana yazdırmak istediğimiz ifade " (tırnak) içeriyorsa, tırnak işaretinin önüne "\" sembolü konularak tırnak işaretini ekrana yazdırabiliriz.
Üç tırnak kullanımı ise biraz daha özel durumlar içindir.
Bu örnekte gördüğümüz gibi üç tırnak içinde hem "Pyhthon'da" ifadesinde yer alan tek tırnağı hem de "karakter dizileri" ifadesinde yer alan çift tırnağı ekrana çıkartmış olduk.
Üç tırnağın bir diğer avantajı ise alt alta yazmak istediğimiz ifadeleri rahatlıkla yazabilmemizdir.
Bu örneğimizde üç tırnaktan sonra gelen üç nokta (...) Python'ın bizden komut girmemize devam etmemiz gerektiğini ifade ediyor. Bu örneğimizin ekran çıktısı ise;
şeklinde olur.
Tabii üç tırnakta yaptığımız bu tarz bir listeleme şeklini çift veya tek tırnak ile yapamayız.
KARAKTER DİZİLERİNİ BİRLEŞTİRMEK
Python'da karakter dizilerini birleştirmek için sıkça kullandığımız yöntemlerden birisi "+" işaretidir.Bu konuya bir örnek ile açıklık getirelim:
Gördüğümüz gibi ad isimli karakter dizisine soyad isimli karakter dizisini de ekledik. Karakter dizilerinin arasında boşluk bırakmak istersek eğer ;
aynı yöntemle boşluk ekleyebiliriz.
Daha önceki yazılarda öğrendiğiniz fonksiyonlardan yararlanarak şöyle bir örnek yapabiliriz.
Karakter dizilerini birbirine eklerken kullandığımız diğer bir yöntem ise "," işaretidir.
Burada karakter dizilerinin arasında otomatik olarak bir boşluk bırakıyor. Bu "," işaretinin bir özelliğidir. Eğer boşluk karakterini kendimiz eklemek istersek "," işaretini
kullanacağız. Zaten karakter dizilerini birbirine eklemede en çok kullanılan yöntem de budur.
Şimdi biraz daha gelişmiş bir örnek yazalım. Bu örneğimizde bilgisayarımızın işletim sistemi ile ilgili birkaç bilgi alabileceğiz. Örneğimizde "os.environ" sözlüğünden yararlanacağız.
Bu sözlük sayesinde bir takım anahtar-değer çiftlerini ekrana yazdırabileceğiz.
Bu koddan sonra bilgisayarınıza ve kullandığınız işletim sistemine göre farklı sonuçlar alacaksınız. Benim aldığım sonuçlar şöyle;
Karakter dizileri hakkında bilmemiz gereken şeylerden biri de değiştirilemez olmalarıdır. Listeler konusundan da hatırlayacağımız gibi oluşturduğumuz bir listeye yeni
bir eleman ekleyebiliyorduk veya eleman çıkarabiliyorduk. Ancak böyle bir şeyi karakter dizilerinde yapamayız. Örneğin;
Ekran çıktımız karakter dizisinin ilk hali olarak çıktı. Buradan da anlayacağımız gibi bir karakter dizisine yeni bir eleman ekleyeceksek o elemanı diziye atamalıyız.
KARAKTER DİZİLERİNİ DİLİMLEMEK
Bazen karakter dizilerini dilimleyerek kullanmak zorunda kalabiliriz. Bunun için yapmamız gereken işlem karakter dizisinde dilimlenecek kısmı işaret etmek. Basit bir örnek
verirsek:
Karakter dizilerini dilimleme yöntemini listeleri dilimlerken de kullanabiliriz.
Bu yöntemi kullanarak karakter dizilerine baştan ve sondan olmak üzere sınırlama getirerek bölebiliriz.
Eğer karakter dizisini baştan başlayıp belli bir kısma kadar bölmek istersek;
yazabiliriz. Veya sıfırı hiç koymayız.
En baştan dilimlemeye başlayacağını sıfır yazarak veya o kısmı boş bırakarak ifade edebiliriz. Aynı şekilde karakter dizisini baştan belli bir yerden başlayıp sonuna kadar
yazabiliriz.
Gördüğümüz gibi baştan sınırladığımız yerden başlayıp karakter dizisinin sonuna kadar yazdırmaya devam etti.
Daha farklı bir örnekle devam etmemiz gerekirse;
Bu örnekte yaptığımız şey ise karakter dizisinin ikinci elemanından başlayıp onuncu elemanına kadar ikişer ikişer atlayarak yazdırmak.
Bu örnekte de karakter dizisinin başından sonuna kadar üçer üçer atlayarak yazdırdık. Bunu şöyle de yazdırabiliriz.
Buradaki len bildiğiniz gibi tüm karakter dizisinin başından sınırlanan kısım ile sonuna kadar olan yeri ifade ediyor.
Eğer yazdığımız karakter dizisini tersten yazmak istersek bunu da dilimleme yöntemi ile yapabiliriz.
Şu ana kadar öğrendiklerimizi bir örnekte toplayacak olursak:
Örnekte gördüğümüz gibi liste elemanlarımızın başında olan "http://" ifadesi yerine "ftp" ifadesini getirdik.
BÜYÜK-KÜÇÜK HARF DEĞİŞİMİ
Python'da en önemli durumlardan biri de yazdığımız stringlerde büyük-küçük harf kullanımı. Python'da harf durumlarını değiştirmek için beş farklı yöntemimiz var. Teker teker
bunları inceleyelim.
1)capitalize()
Bu metodu karakter dizilerinin ilk harfini büyütmede kullanıcaz.Örneğin;
Listelerde de her elemanın ilk harfini büyütmek için bu metoddan yararlanabiliriz.
Ancak karakter dizimiz birkaç kelimeden oluşuyorsa sadece ilk harfi büyütebiriz.
2)title()
Karakter dizisindeki tüm kelimelerin ilk harfini büyük yazmamızı sağlayan bir metoddur.Örneğin;
Kodumuzu yazarken stringimiz öncesinde kullandığımız "u" harfi stringin Türkçe karakterlere daha uyumlu bir şekilde yazılmasını sağlar.
3)upper()
Bu metod sayesinde yazdığımız tüm karakter dizisini ekrana büyük harflerle çıkartabileceğiz.
4)lower()
Bu metod ise upper() metodunun tam tersi işlem yapar. Yani büyük harfle yazdığımız karakter dizisinin ekran çıktısını küçük harflerle yapar.
5)swapcase()
Bu metodu upper() ve lower() metodlarının birleşimi gibi düşünebiliriz. Bu metod sayesinde karakter dizisindeki küçük harf büyük harfle, büyük harf ise küçük harfle
ekrana yazdırılır.
BÜYÜK-KÜÇÜK HARF VE BOŞLUK SORGULAMA
Biraz öğrendiğimiz birkaç metodla yazdığımız karakter dizilerinde harf düzenlemesi yapabildik. Şimdi öğreneceğimiz birkaç metodla ise yazdığımız karakter dizilerinde büyük-küçük
harf durumlarını kontrol edeceğiz. Eğer kontrollerimiz doğru olursa bize "true", "yanlış" olursa false değeri dönecek.
1)islower()
Bu metodla karakter dizimizin tamamen küçük harften oluşup oluşmadığını kontrol edeceğiz.
2)isupper()
Bu metod sayesinde karakter dizimizin tamamen büyük harften oluşup oluşmadığını inceleyeceğiz.
3)istitle()
Bu metod ise yazdığımız karakter dizisinin ilk harflerinin büyük olup olmadığını kontrol eder.
4)isspace()
Bu metod ise yazdığımız karkater dizisinin tüm karakterlerinin boşluktan oluşup oluşmadığını kontrol edecek.Örneğin;
Şimdi birazda yukarıda karakter dizilerini yazarken neden "u" harfini kullandığımızdan bahsedelim. "u" harfi "unicode" anlamına gelmektedir. Yazdığımız karakter dizilerinde
Türkçe karakterlerin ekran çıktısında bir sıkıntısı olmasın diye kullandığımız bir terimdir.Örneğin;
Burada capitalize fonksiyonu karakter dizisinin ilk harfini büyütmeliydi ama "ş" harfi Türkçe karakter olduğu için gerçekleştiremedi. Biz bu karakter dizisini "unicode" olarak
belirtirsek;
sorunu ortadan kaldırmış oluruz.
Normalde True dönmesi gereken bir kod olamasına rağmen içeriğinde Türkçe karakterler olduğu için False döndü. Bunu da ortadan unicode özelliği ile kaldırabiliriz.
Unicode özelliği her zaman Türkçe karakterleri ifade etmede doğru şekilde çalışmaz. Örneğin "i" harfini "İ" şeklinde büyütmez. Tam tersi de geçerlidir. Yani "I" harfini "ı" diye
küçültmez.Örnek verirsek daha iyi anlayacağız sanırım.
Gördüğümüz gibi "i" harfini "I" olarak büyüttü.
Burada da "I" harfini "i" olarak küçülttü.
SAĞA SOLA YASLAMA İŞLEMLERİ VE SIFIRLA DOLDURMA
Karakter dizilerini ekrana yazdırdığımızda çıktının nerede olacağını belirlemek için birkaç metod kullanırız.
1)center()
center() metodu bir karakter dizisini ortalamak için kullanılır.Örneğin;
Bu örnekte yaptığımız karakter dizimizi istediğimiz uzunluk içerisinde ortalayarak yazmak. 15 sayısıyla ifade ettiğimiz şey ise bu örnek için 6+9 dur. Yani saydığımız
stringin uzunluğu + boşluk sayısı.
center() metodunda istediğimiz işareti stringimizin yanına ekleyebiliriz. Şöyleki;
Bu örnekte de boşluk yerine istediğimiz bir işarete yer verdik.
Bu örneğimizi şöyle de yazabiliriz.
Eğer belirttiğimiz sayı karakter dizimizin uzunluğundan küçük ise boşluk bırakılmaz veya istediğimiz işaret koyulmaz.
veya
2)ljust()
Bu metod yazdığımız karakter dizilerini sola yaslar. Boşluk veya istenilen işareti ise sağa doğru yerleştirir.Örneğin;
Gördüğümüz gibi yazı soldan başlanarak yazdırıldı boşluk ise sağa doğru bırakıldı.
3)rjust()
Bu metod ise karakter dizilerini sağa yaslar boşluk veya herhangi bir karakteri ise sola doğru yazdırır.
veya
Şimdi bu öğrendiklerimizi bir örnekte toplarsak:
Bu örneğin ekran çıktısı:
Yazdığımız kodda ljust() metodunu kullandığımız için ekran çıktısı sola yaslanmış şekilde ortaya çıktı.
4)zfill()
Bu metod sayesinde karakter dizimizin başına istediğimiz kadar "0" koyabiliyoruz.
KARAKTER DEĞİŞTİRMİ
replace()
Bu metod sayesinde yazdığımız karakter dizisindeki herhangi bir harfi değiştirebilir veya silebiliriz.Bu metodun kullanım şekli:
karakter_dizisi.replace("eski_karakter","yeni_karakter")
Örnek vermemiz gerekirse;
Örnekte "a" harfi yerine "ş" harfi yazdık.
Eğer kaç tane karakter üzerinde değişiklik yapacağımızı bellirtmek istiyorsak;
Burada da gördüğümüz gibi ilk "a" harfi yerine "ş" geldi fakat ikinci "a" harfi aynı şekilde kaldı. Çünkü biz kodumuzda 1 tane "a" harfinin değiştirilmesini istedik.
Eğer karakter dizimizden harf sildirmek istersek bunun için de ;
KARAKTER DİZİLERİNİN BAŞLANGIÇ VE BİTİŞ DEĞERLERİNİ SORGULAMAK
Bu kısımda yazdığımız karakter dizilerinin başlangıç ve bitiş değerlerini nasıl inceleyeceğimizi öğreneceğiz. Örneklerle daha iyi açıklayabiliriz.
1)startswith()
Karakter dizilerinin başlangıç harfini incelememizi sağlayacak olan metoddur.
Karakter dizimizin ilk harfi "e" olduğu için true değeri döndü.
Karakter dizimizin ilk harfi "c" olmadığı için false değeri döndü.
Bu metodu liste yönteminde de kullanabiliriz. Daha geniş bir örnek verirsek:
Bu örneğimizde ise hem liste elemanlarının baş harflerine göre seçtik hem de seçtiğimiz elemanlarının başharflerini önceden öğrendiğimiz replace() metoduyla değiştirdik.
2)endswith()
Karakter dizilerinin son harflerini incelememizi sağlayacak olan metoddur. Örneğin;
Karakter dizimizin son harfi "n" ile bittiği için true değerini döndürdü.
Karakter dizimiz "b" harfi ile bitmediği için false değerini döndü.
Şimdi listelerden bir örnek verelim:
Örnekte yaptığımız şey listedeki "!" ile biten elemanların son karakterini silip ekrana yazdırmak.
KARAKTER DİZİLERİNİ SAYMA
count()
Bu metodla karakter dizimizin sayımını yapabiliyoruz. Mesela yazdığımız bir karakter dizisinin içinde bir hrfte kaç tane olduğunu bu metodla öğrenebiliriz. Bir örnekle
daha iyi anlayabiliriz.
Yazdığımız karakter dizisinde "a" harfinden iki tane bulunduğu için sonuç 2 olarak döndü. Gelin şimdi de girdiğimiz bu karakter dizisinde her harften kaç tane olduğunu bulalım.
Bu örneğimizin ekran çıktısı:
karakter dizinizi giriniz:
Şimdi herhangi bir karakter dizisi üzerinden yola çıkalım.
karakter dizinizi giriniz:korsan değil özgür yazılım
Burada a dizisi "korsandeğilözgüryazılım" şeklini alır. Daha sonra b dizisi devreye girer. b dizisi ise "korsandeğilözgüryzılm" şeklini alır. Ekran çıktımız ise:
KARAKTER DİZİLERİNİN NİTELİĞİNİ SORGULAMA
Bu kısımda bir karakter dizisinin alfabetik mi nümerik mi yoksa alfanümerik mi olduğunu inceleyeceğimiz metodlar kullanacağız. Hemen örneklerle başlayalım.
1)isalpha()
Bu metod girdiğimiz karakter dizisinin alfabetik olup olmadığını inceler. Eğer alfabetik bir karakter dizisi girmişsek true girmemişsek false değerini döndürür. Bir örnekle
açıklayalım.
Burada "python" alfabetik bir karakter dizisi olduğu için true değeri döndü.
Bu örnekte ise "1020" dizisi nümerik olduğu için false değeri döndü.
Burada ise "." karakteri alfabetik bir değer olamdığı için false değeri döndü. Yani bir karakter dizisinin alfabetik olması için tüm karakterlerin alfabetik olması gerekir.
Arada boşluk karakteri bile olmamalıdır.
Alfabetik karakterleri sorgularken yazdığımız karakter dizilerinin Türkçe karakterlerden dolayı hata vermemesi için unicode olarak tanımlamamızda yarar vardır. Örneğin;
False değeri döndü çünkü "ş" harfi Türkçe karakter olduğu için alfabetik karakter olarak tanımlamadı. Eğer karakter dizisini unicode olarak tanımlarsak bu sorunu ortadan
kaldırmış oluruz.
2)isdigit()
Bu metod ise girdiğimiz karakter dizisinin nümerik olup olmadığını kontrol etmemize yarar.
Bu metodla da boşluk veya herhangi bir karakter kullanıldığında false değeri döner.
veya
3)isalnum()
Bu metod ise karakter dizisinin alfanümerik olup olmadığını inceler. Her alfabetik ya da nümerik karakter aynı zamanda alfanümerik bir karakterdir. (Tam tersi geçerli değildir.
Gördüğümüz gibi alfabetik ve nümerik karakterleri bir arada kullanabiliyoruz.
Şimdi öğrendiğimiz üç metodu da daha iyi kavramak için bir örnek yapalım.
Ekran çıktımız bu şekilde olacaktır. Buradaki alfabetik ve nümerik karakterler aynı zamanda alfanümeriktirler. Ancak özel karakterler bu kapsam içine girmezler.
SEKME BOŞLUKLARINI GENİŞLETME
expandtabs()
Yazdığımız bir karakter dizisinde ne kadar boşluk bırakmak istediğimizi belirtebileceğimiz bir metoddur.
Gördüğümüz gibi karakterlerin arasında 5 tane boşluk bırakabildik.
KARAKTER KONUMU BULMA
Bu kısımda yazdığımız karakter dizisinde bir karakterin konumunu bulmada kullanacağımız metodları öğreneceğiz. Sırayla başlayalım.
1)find()
Bu metod karakter dizimizdeki herhangi bir karakterini bulmada yardımcı olur bize. Bu metod karakter dizilerini soldan sağa doğru okur. Bir örnekle açıklayalım.
"t" harfi karakter dizimizde 2. indeksli karakter olduğu için "2" değeri geri döndü.
Eğer aradığımız arf karakter dizimizde bulunmuyorsa "-1" değeri döner. Örneğin;
Bu metodla istediğimiz aralık içerisinde de arama yapabiliriz. Bunun için kullanacağımız ifade;
"karakter_dizisi".find("aranacak_karakter",baslangıç_değeri,bitiş_değeri)
2. ve 5. indeks arasında "h" harfi 3. indeste yer alıyor.
2)rfind()
Bu metod find() metodu ile aynı işlemleri yapar. Tek farkı karakter dizilerini sağdan sola doğru okur.
Bu örneği yukarıda find() metodu ile yaptığımızda bize 0 değerini döndürmüştü. Çünkü find() metodu karakter dizisini soldan sağa doğru okur. Bu örneğimizde ise rfind() metodu
kullandığımız için 3 değeri döndü. Çünkü rfind() metodu karakter dizisini sağdan sola doğru okudu ve karşısına ilk çıkan "e" harfinin indeksini değer olarak döndürdü.
3)index()
Bu metod find() metodu ile aynı işi yapıyor. Tek farkı karakter dizisinde olmayan eleman girdiğimizde "-1" değeri yerine hata mesajı döndürmesidir.
4)rindex()
Bu metod da index() metodu ile aynı işi yapıyor. Tek farkı karakter dizisini sağdan sola doğru okuması.
Bu metod da olmayan bir karakteri aradığımızda hata mesajı döndürür.
a)join()
Bu metodu yazdığımız karakter dizilerinin arasına bişey koymak istediğimiz zaman kullanacağız. Şöyleki:
Dikkat edersek yadığımız kodda "a.join()" diye bir ifade kullanmadık. Çünkü bu metodu kullanırken uygulayacağımız işareti önce, hangi karakter dizisine uygulayacağımızı ise
parantez içerisinde belirtiyoruz.
Bu metodu listelerde de kullanabiliriz.
Daha dinamik bir örnek verirsek;
KARAKTER DİZİLERİNİ PARÇALARA AYIRMA
Karakter dizilerini parçalara ayırmada iki yöntem kullanacağız.
1)partititon()
Bu metodu kullanarak bir karakter dizisini üç parçaya bölebiliyoruz. Bu metod karakter dizisini soldan sağa okur.
Eğer yazdığımız karakter ifademizde yoksa şu şekilde bir ayırma işlemi yapıyor.
2)rpartition()
Bu metod partition() metodu ile aynı aynı işe yapar. Tek farkı karakter dizilerini sağdan sola doğru okumasıdır.
KAYNAKLAR
https://www.google.com.tr/
http://www.istihza.com
[/COLOR]
Bu bölümde birçok programlama dilinde olduğu gibi Python dilinde de sıkça kullanılan Karakter Dizilerinden (string) bahsedeceğiz.
Python'da karakter dizilerini ifade etmek için yapmamız gereken tek şey, ifademizi tırnak ("") içinde belirtmektir. Python'da tırnak içerisinde belirtilen her şey karakter dizisi
olarak kabul edilir.Bir örnek vermemiz gerekirse;
[COLOR=white !important]?
1
2
2
>>>"Python"
'Python'
'Python'
Şimdi bu ifadenin türünü öğrenmek için daha önceden öğrendiğimiz type fonksiyonumuzu kullanalım.
[/COLOR]
[COLOR=white !important]?
1
2
2
>>>type("Python")
type 'str'
type 'str'
Gördüğümüz gibi tırnak içerisinde belirttiğimiz "Python" ifadesinin türü str yani stringtir. Peki ifademizi tırnak içerisinde yazmasaydık ne olurdu? Deneyip görelim;
[COLOR=white !important]?[/COLOR]
1
2
3
4
2
3
4
>>>type(Pyhton)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'Pyhton' is not defined</module></stdin>
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'Pyhton' is not defined</module></stdin>
Gördüğümüz üzere ifademizi tırnak içinde yazmadığımız için derleyici onu string olarak görmedi ve tanımlanamadığına dair hata verdi.
Tırnak içerisinde yazdığımız her ifade string olarak tanımlanır dedik. Bunu şöyle bir örnekle daha iyi kavrayabiliriz.
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>>a=5
>>>type(a)
type 'int'
>>>type(a)
type 'int'
Burada a değişkeninin türü integer olarak verildi. Peki biz bu ifadeyi tırnak içerisinde yazarsak ne olur?
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>>a="5"
>>>type(a)
type 'str'
>>>type(a)
type 'str'
a değişkenine atadığımız değeri tırnak içerisinde gönderdiğimiz için type'ı str yani string'tir. Buradan da anlaşılacağı üzere Python'da tırnak içerisinde girilen her değer string'tir.
Aynı ifadeyi şöyle de yazabilirdik.
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>>a=5
>>>type("a")
type 'str'
>>>type("a")
type 'str'
Burada da type fonksiyonunun içinde a değişkenini string olarak çağırmış olduk.
Yazdığımız stringleri ekrana çıkartmak için çok alışkın olduğumuz "print" komutunu kullanacağız.
[COLOR=white !important]?[/COLOR]
1
2
2
>>>print "Pyhton Dersleri"
Pyhton Dersleri
Pyhton Dersleri
Burada derleyici iki iş yapıyor. Birincisi tırnak içerisinde yazılan stringi okuyor. İkincisi "print" fonksiyonuyla okuduğu string'i ekrana yazdırıyor.Biz bu string'i
[COLOR=white !important]?[/COLOR]
1
2
2
>>>"Pyhton Dersleri"
'Pyhton Dersleri'
'Pyhton Dersleri'
şeklinde yazdığımızda da görebiliyoruz ancak derleyici burda sadece string'i okuma işlemini yapıyor ekrana yazdırmıyor. İlerde kodlarımızı bir dosyaya kaydedip çalıştırdığımızda
yukarıdaki kodun ekrana hiçbir şey yazdırmadığını göreceksiniz.
Karakter dizilerini kullanırken dikkat etmeniz gereken en önemli nokta tırnak işareti kullanımıdır. Stringimizi yazarken ister çift tırnak(""), ister tek tırnak(''), istersek
üç tırnak("""""") kullanabiliriz. Hangi tırnak işaretini kullandığımızın çok da bir önemi yoktur. Önemli olan başladığımız tırnak işaretini aynı şekilde kapatmamızdır.
Gelin örneklerimize çift tırnak kullanımı ile başlayalım.
[COLOR=white !important]?[/COLOR]
1
2
2
>>>print "Python'da karakter dizileri (string) çalışıyoruz."
Python'da karakter dizileri (string) çalışıyoruz.
Python'da karakter dizileri (string) çalışıyoruz.
Burada çift tırnak kullandığımızda yazdığımız string ifadesi hata vermeden çalıştı. Peki bunu tek tırnakla yazarsak
[COLOR=white !important]?[/COLOR]
1
2
3
4
5
6
2
3
4
5
6
>>>print 'Pyhton'da karakter dizileri (string) çalışıyoruz.'
File "<stdin>", line 1
print 'Pyhton'da karakter dizileri (string) çalışıyoruz.'
^
SyntaxError: invalid syntax
</stdin>
File "<stdin>", line 1
print 'Pyhton'da karakter dizileri (string) çalışıyoruz.'
^
SyntaxError: invalid syntax
</stdin>
şeklinde bir hata ile karşılaşırız. Bunun sebebi "Pyhton'da" ifadesindeki tek tırnak işaretinden kaynaklanıyor. Derleyici burada kullandığımız tek tırnağı başlangıçta açtığımız
tırnağın kapanışı olarak düşündüğünden, ifadenin devamını okumakta sorun yaşar ve hata verir. Bunu ortadan kaldırmak için çift tırnak kullanabileceğimiz gibi
[COLOR=white !important]?[/COLOR]
1
2
2
>>>print 'Pyhton\'da karakter dizileri (string) çalışıyoruz.'
Pyhton'da karakter dizileri (string) çalışıyoruz.
Pyhton'da karakter dizileri (string) çalışıyoruz.
"\" işaretini de kullanabiliriz. Eğer ekrana yazdırmak istediğimiz ifade " (tırnak) içeriyorsa, tırnak işaretinin önüne "\" sembolü konularak tırnak işaretini ekrana yazdırabiliriz.
Üç tırnak kullanımı ise biraz daha özel durumlar içindir.
[COLOR=white !important]?[/COLOR]
1
2
2
>>>print """Python'da "karakter dizileri" (string) çalışıyoruz."""
Python'da "karakter dizileri" (string) çalışıyoruz.
Python'da "karakter dizileri" (string) çalışıyoruz.
Bu örnekte gördüğümüz gibi üç tırnak içinde hem "Pyhthon'da" ifadesinde yer alan tek tırnağı hem de "karakter dizileri" ifadesinde yer alan çift tırnağı ekrana çıkartmış olduk.
Üç tırnağın bir diğer avantajı ise alt alta yazmak istediğimiz ifadeleri rahatlıkla yazabilmemizdir.
[COLOR=white !important]?[/COLOR]
1
2
3
4
5
6
7
2
3
4
5
6
7
>>>print """
...Python Konuları
...1)listeler
...2)demetler
...3)fonksiyonlar
...4)karakter dizileri(string)
..."""
...Python Konuları
...1)listeler
...2)demetler
...3)fonksiyonlar
...4)karakter dizileri(string)
..."""
Bu örneğimizde üç tırnaktan sonra gelen üç nokta (...) Python'ın bizden komut girmemize devam etmemiz gerektiğini ifade ediyor. Bu örneğimizin ekran çıktısı ise;
[COLOR=white !important]?[/COLOR]
1
2
3
4
5
2
3
4
5
Python Konuları
1)listeler
2)demetler
3)fonksiyonlar
4)karakter dizileri(string)
1)listeler
2)demetler
3)fonksiyonlar
4)karakter dizileri(string)
şeklinde olur.
Tabii üç tırnakta yaptığımız bu tarz bir listeleme şeklini çift veya tek tırnak ile yapamayız.
KARAKTER DİZİLERİNİ BİRLEŞTİRMEK
Python'da karakter dizilerini birleştirmek için sıkça kullandığımız yöntemlerden birisi "+" işaretidir.Bu konuya bir örnek ile açıklık getirelim:
[COLOR=white !important]?[/COLOR]
1
2
3
4
5
2
3
4
5
>>>ad = "Sultan"
>>>soyad = "Düzgün"
>>>adSoyad = ad + soyad
>>>print adSoyad
SultanDüzgün
>>>soyad = "Düzgün"
>>>adSoyad = ad + soyad
>>>print adSoyad
SultanDüzgün
Gördüğümüz gibi ad isimli karakter dizisine soyad isimli karakter dizisini de ekledik. Karakter dizilerinin arasında boşluk bırakmak istersek eğer ;
[COLOR=white !important]?[/COLOR]
1
2
3
4
5
2
3
4
5
>>>ad = "Sultan"
>>>soyad = "Düzgün"
>>>bosluk = " "
>>>print ad + bosluk + soyad
Sultan Düzgün
>>>soyad = "Düzgün"
>>>bosluk = " "
>>>print ad + bosluk + soyad
Sultan Düzgün
aynı yöntemle boşluk ekleyebiliriz.
Daha önceki yazılarda öğrendiğiniz fonksiyonlardan yararlanarak şöyle bir örnek yapabiliriz.
[COLOR=white !important]?[/COLOR]
1
2
3
4
5
6
2
3
4
5
6
>>>a = ""
>>>for i in range(10):
... a += str(i)
...
>>>print a
0123456789
>>>for i in range(10):
... a += str(i)
...
>>>print a
0123456789
Karakter dizilerini birbirine eklerken kullandığımız diğer bir yöntem ise "," işaretidir.
[COLOR=white !important]?[/COLOR]
1
2
3
4
2
3
4
>>>ad = "Sultan"
>>>soyad = "Düzgün"
>>>print ad,soyad
Sultan Düzgün
>>>soyad = "Düzgün"
>>>print ad,soyad
Sultan Düzgün
Burada karakter dizilerinin arasında otomatik olarak bir boşluk bırakıyor. Bu "," işaretinin bir özelliğidir. Eğer boşluk karakterini kendimiz eklemek istersek "," işaretini
kullanacağız. Zaten karakter dizilerini birbirine eklemede en çok kullanılan yöntem de budur.
Şimdi biraz daha gelişmiş bir örnek yazalım. Bu örneğimizde bilgisayarımızın işletim sistemi ile ilgili birkaç bilgi alabileceğiz. Örneğimizde "os.environ" sözlüğünden yararlanacağız.
Bu sözlük sayesinde bir takım anahtar-değer çiftlerini ekrana yazdırabileceğiz.
[COLOR=white !important]?[/COLOR]
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# -*- coding: cp1254 -*-
import os
print "Kullanıcı adı: ", os.environ["USERNAME"]
print "Bilgisayar adı: ", os.environ["COMPUTERNAME"]
print "Ev dizini: ", os.environ["HOMEPATH"]
print "İşlemci: ", os.environ["PROCESSOR_IDENTIFIER"]
print "İşlemci sayısı: ", os.environ["NUMBER_OF_PROCESSORS"]
print "İşletim sistemi:", os.environ["OS"]
import os
print "Kullanıcı adı: ", os.environ["USERNAME"]
print "Bilgisayar adı: ", os.environ["COMPUTERNAME"]
print "Ev dizini: ", os.environ["HOMEPATH"]
print "İşlemci: ", os.environ["PROCESSOR_IDENTIFIER"]
print "İşlemci sayısı: ", os.environ["NUMBER_OF_PROCESSORS"]
print "İşletim sistemi:", os.environ["OS"]
Bu koddan sonra bilgisayarınıza ve kullandığınız işletim sistemine göre farklı sonuçlar alacaksınız. Benim aldığım sonuçlar şöyle;
[COLOR=white !important]?[/COLOR]
1
2
3
4
5
6
2
3
4
5
6
Kullanıcı adı: DELL
Bilgisayar adı: PC
Ev dizini: \Users\DELL
işlemci: Intel64 Family 6 Model 58 Stepping 9, GenuineIntel
işlemci sayısı: 4
işletim sistemi: Windows_NT
Bilgisayar adı: PC
Ev dizini: \Users\DELL
işlemci: Intel64 Family 6 Model 58 Stepping 9, GenuineIntel
işlemci sayısı: 4
işletim sistemi: Windows_NT
Karakter dizileri hakkında bilmemiz gereken şeylerden biri de değiştirilemez olmalarıdır. Listeler konusundan da hatırlayacağımız gibi oluşturduğumuz bir listeye yeni
bir eleman ekleyebiliyorduk veya eleman çıkarabiliyorduk. Ancak böyle bir şeyi karakter dizilerinde yapamayız. Örneğin;
[COLOR=white !important]?[/COLOR]
1
2
3
4
2
3
4
>>>a = "Sultan"
>>>a + "Düzgün"
>>>print a
Sultan
>>>a + "Düzgün"
>>>print a
Sultan
Ekran çıktımız karakter dizisinin ilk hali olarak çıktı. Buradan da anlayacağımız gibi bir karakter dizisine yeni bir eleman ekleyeceksek o elemanı diziye atamalıyız.
[COLOR=white !important]?[/COLOR]
1
2
3
4
2
3
4
1
KARAKTER DİZİLERİNİ DİLİMLEMEK
Bazen karakter dizilerini dilimleyerek kullanmak zorunda kalabiliriz. Bunun için yapmamız gereken işlem karakter dizisinde dilimlenecek kısmı işaret etmek. Basit bir örnek
verirsek:
[COLOR=white !important]?[/COLOR]
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
>>>a = "Python"
>>>print a[0]
>>>print a[2]
>>>print a[-1]
>>>print a[-3]
P
t
h
n
>>>print a[0]
>>>print a[2]
>>>print a[-1]
>>>print a[-3]
P
t
h
n
Karakter dizilerini dilimleme yöntemini listeleri dilimlerken de kullanabiliriz.
[COLOR=white !important]?[/COLOR]
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
>>>liste = ["Python","çalışıyor","ve","öğreniyoruz"]
>>>print liste[1]
>>>print liste[-1]
>>>print liste[0]
>>>print liste[3]
çalışıyor
öğreniyoruz
Python
öğreniyoruz
>>>print liste[1]
>>>print liste[-1]
>>>print liste[0]
>>>print liste[3]
çalışıyor
öğreniyoruz
Python
öğreniyoruz
Bu yöntemi kullanarak karakter dizilerine baştan ve sondan olmak üzere sınırlama getirerek bölebiliriz.
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>>a = "Python"
>>>print a[1:4]
yth
>>>print a[1:4]
yth
Eğer karakter dizisini baştan başlayıp belli bir kısma kadar bölmek istersek;
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>>a = "Python"
>>>print a[0:4]
Pyth
>>>print a[0:4]
Pyth
yazabiliriz. Veya sıfırı hiç koymayız.
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>>a = "Python"
>>>print a[:4]
Pyth
>>>print a[:4]
Pyth
En baştan dilimlemeye başlayacağını sıfır yazarak veya o kısmı boş bırakarak ifade edebiliriz. Aynı şekilde karakter dizisini baştan belli bir yerden başlayıp sonuna kadar
yazabiliriz.
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>>a = "Python"
>>>print a[2:]
thon
>>>print a[2:]
thon
Gördüğümüz gibi baştan sınırladığımız yerden başlayıp karakter dizisinin sonuna kadar yazdırmaya devam etti.
Daha farklı bir örnekle devam etmemiz gerekirse;
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>>a = "Python öğreniyoruz."
>>>print a[2:10:2]
to g
>>>print a[2:10:2]
to g
Bu örnekte yaptığımız şey ise karakter dizisinin ikinci elemanından başlayıp onuncu elemanına kadar ikişer ikişer atlayarak yazdırmak.
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>>a = "Python öğreniyoruz."
>>>print a[::3]
Ph rir.
>>>print a[::3]
Ph rir.
Bu örnekte de karakter dizisinin başından sonuna kadar üçer üçer atlayarak yazdırdık. Bunu şöyle de yazdırabiliriz.
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>>a = "Python öğreniyoruz."
>>>print a[0:len(a):3]
Ph rir.
>>>print a[0:len(a):3]
Ph rir.
Buradaki len bildiğiniz gibi tüm karakter dizisinin başından sınırlanan kısım ile sonuna kadar olan yeri ifade ediyor.
Eğer yazdığımız karakter dizisini tersten yazmak istersek bunu da dilimleme yöntemi ile yapabiliriz.
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>>a = "Python öğreniyoruz."
>>>print a[::-1]
.zuroyinerğö nohtyP
>>>print a[::-1]
.zuroyinerğö nohtyP
Şu ana kadar öğrendiklerimizi bir örnekte toplayacak olursak:
[COLOR=white !important]?[/COLOR]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# -*- coding: utf-8 -*-
liste = ["http://www.python.org",
"http://www.istihza.com",
"http://www.google.com",
"http://www.yahoo.com"]
for i in liste:
print "ftp" + i[10:]
ftp.python.org
ftp.istihza.com
ftp.google.com
ftp.yahoo.com
liste = ["http://www.python.org",
"http://www.istihza.com",
"http://www.google.com",
"http://www.yahoo.com"]
for i in liste:
print "ftp" + i[10:]
ftp.python.org
ftp.istihza.com
ftp.google.com
ftp.yahoo.com
Örnekte gördüğümüz gibi liste elemanlarımızın başında olan "http://" ifadesi yerine "ftp" ifadesini getirdik.
BÜYÜK-KÜÇÜK HARF DEĞİŞİMİ
Python'da en önemli durumlardan biri de yazdığımız stringlerde büyük-küçük harf kullanımı. Python'da harf durumlarını değiştirmek için beş farklı yöntemimiz var. Teker teker
bunları inceleyelim.
1)capitalize()
Bu metodu karakter dizilerinin ilk harfini büyütmede kullanıcaz.Örneğin;
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>>a = "python"
>>>print a.capitalize()
Python
>>>print a.capitalize()
Python
Listelerde de her elemanın ilk harfini büyütmek için bu metoddan yararlanabiliriz.
[COLOR=white !important]?[/COLOR]
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
>>>liste = ["korsan","değil","özgür","yazılım"]
>>>for i in liste:
...print liste.capitalize()
...
Korsan
Değil
Özgür
Yazılım
>>>for i in liste:
...print liste.capitalize()
...
Korsan
Değil
Özgür
Yazılım
Ancak karakter dizimiz birkaç kelimeden oluşuyorsa sadece ilk harfi büyütebiriz.
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>>a = "korsan değil özgür yazılım"
>>>print a.capitalize()
Korsan değil özgür yazılım
>>>print a.capitalize()
Korsan değil özgür yazılım
2)title()
Karakter dizisindeki tüm kelimelerin ilk harfini büyük yazmamızı sağlayan bir metoddur.Örneğin;
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>>a = u"korsan değil özgür yazılım"
>>>print a.title()
Korsan Değil Özgür Yazılım
>>>print a.title()
Korsan Değil Özgür Yazılım
Kodumuzu yazarken stringimiz öncesinde kullandığımız "u" harfi stringin Türkçe karakterlere daha uyumlu bir şekilde yazılmasını sağlar.
3)upper()
Bu metod sayesinde yazdığımız tüm karakter dizisini ekrana büyük harflerle çıkartabileceğiz.
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
1
2
3
2
3
>>>b = u"korsan değil özgür yazılım"
>>>print b.upper()
KORSAN DEĞİL ÖZGÜR YAZILIM
>>>print b.upper()
KORSAN DEĞİL ÖZGÜR YAZILIM
4)lower()
Bu metod ise upper() metodunun tam tersi işlem yapar. Yani büyük harfle yazdığımız karakter dizisinin ekran çıktısını küçük harflerle yapar.
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
1
2
3
2
3
>>>b = u"KORSAN DEĞİL ÖZGÜR YAZILIM"
>>>print b.lower()
korsan değil özgür yazılım
>>>print b.lower()
korsan değil özgür yazılım
5)swapcase()
Bu metodu upper() ve lower() metodlarının birleşimi gibi düşünebiliriz. Bu metod sayesinde karakter dizisindeki küçük harf büyük harfle, büyük harf ise küçük harfle
ekrana yazdırılır.
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
1
2
3
2
3
1
2
3
2
3
>>>c = "pYtHoN"
>>>print c.swapcase()
PyThOn
>>>print c.swapcase()
PyThOn
BÜYÜK-KÜÇÜK HARF VE BOŞLUK SORGULAMA
Biraz öğrendiğimiz birkaç metodla yazdığımız karakter dizilerinde harf düzenlemesi yapabildik. Şimdi öğreneceğimiz birkaç metodla ise yazdığımız karakter dizilerinde büyük-küçük
harf durumlarını kontrol edeceğiz. Eğer kontrollerimiz doğru olursa bize "true", "yanlış" olursa false değeri dönecek.
1)islower()
Bu metodla karakter dizimizin tamamen küçük harften oluşup oluşmadığını kontrol edeceğiz.
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
1
2
3
2
3
>>>b = "Korsan değil özgür yazılım"
>>>b.islower()
False
>>>b.islower()
False
2)isupper()
Bu metod sayesinde karakter dizimizin tamamen büyük harften oluşup oluşmadığını inceleyeceğiz.
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
1
2
3
2
3
>>>b = "Korsan DEĞİL Özgür Yazılım"
>>>b.isupper()
False
>>>b.isupper()
False
3)istitle()
Bu metod ise yazdığımız karakter dizisinin ilk harflerinin büyük olup olmadığını kontrol eder.
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
1
2
3
2
3
>>>b = "Python öğreniyoruz."
>>>b.istitle()
False
>>>b.istitle()
False
4)isspace()
Bu metod ise yazdığımız karkater dizisinin tüm karakterlerinin boşluktan oluşup oluşmadığını kontrol edecek.Örneğin;
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
1
2
3
2
3
1
2
3
2
3
>>>c = ""
>>>c.isspace()
False
>>>c.isspace()
False
Şimdi birazda yukarıda karakter dizilerini yazarken neden "u" harfini kullandığımızdan bahsedelim. "u" harfi "unicode" anlamına gelmektedir. Yazdığımız karakter dizilerinde
Türkçe karakterlerin ekran çıktısında bir sıkıntısı olmasın diye kullandığımız bir terimdir.Örneğin;
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>>a = "şekerli çay"
>>>a.capitalize()
şekerli çay
>>>a.capitalize()
şekerli çay
Burada capitalize fonksiyonu karakter dizisinin ilk harfini büyütmeliydi ama "ş" harfi Türkçe karakter olduğu için gerçekleştiremedi. Biz bu karakter dizisini "unicode" olarak
belirtirsek;
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>>a = u"şekerli çay"
>>>a.capitalize()
Şekerli çay
>>>a.capitalize()
Şekerli çay
sorunu ortadan kaldırmış oluruz.
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>>a = "Gün Python Çalışma Günüdür"
>>>a.istitle()
False
>>>a.istitle()
False
Normalde True dönmesi gereken bir kod olamasına rağmen içeriğinde Türkçe karakterler olduğu için False döndü. Bunu da ortadan unicode özelliği ile kaldırabiliriz.
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>>a = u"Gün Python Çalışma Günüdür"
>>>a.istitle()
True
>>>a.istitle()
True
Unicode özelliği her zaman Türkçe karakterleri ifade etmede doğru şekilde çalışmaz. Örneğin "i" harfini "İ" şeklinde büyütmez. Tam tersi de geçerlidir. Yani "I" harfini "ı" diye
küçültmez.Örnek verirsek daha iyi anlayacağız sanırım.
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>>a = u"şekerli çay"
>>>print a.upper()
ŞEKERLI ÇAY
>>>print a.upper()
ŞEKERLI ÇAY
Gördüğümüz gibi "i" harfini "I" olarak büyüttü.
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>>a = u"ISLIK"
>>>print a.lower()
islik
>>>print a.lower()
islik
Burada da "I" harfini "i" olarak küçülttü.
SAĞA SOLA YASLAMA İŞLEMLERİ VE SIFIRLA DOLDURMA
Karakter dizilerini ekrana yazdırdığımızda çıktının nerede olacağını belirlemek için birkaç metod kullanırız.
1)center()
center() metodu bir karakter dizisini ortalamak için kullanılır.Örneğin;
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>>a = "python"
>>>print a.center(15)
python
>>>print a.center(15)
python
Bu örnekte yaptığımız karakter dizimizi istediğimiz uzunluk içerisinde ortalayarak yazmak. 15 sayısıyla ifade ettiğimiz şey ise bu örnek için 6+9 dur. Yani saydığımız
stringin uzunluğu + boşluk sayısı.
center() metodunda istediğimiz işareti stringimizin yanına ekleyebiliriz. Şöyleki;
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>>a = "python"
>>>print a.center(15,"#")
#####python####
>>>print a.center(15,"#")
#####python####
Bu örnekte de boşluk yerine istediğimiz bir işarete yer verdik.
Bu örneğimizi şöyle de yazabiliriz.
[COLOR=white !important]?[/COLOR]
1
2
2
>>>"python".center(15,"#")
#####python####
#####python####
Eğer belirttiğimiz sayı karakter dizimizin uzunluğundan küçük ise boşluk bırakılmaz veya istediğimiz işaret koyulmaz.
[COLOR=white !important]?[/COLOR]
1
2
2
>>>"python".center(5)
'python'
'python'
veya
[COLOR=white !important]?[/COLOR]
1
2
2
1
2)ljust()
Bu metod yazdığımız karakter dizilerini sola yaslar. Boşluk veya istenilen işareti ise sağa doğru yerleştirir.Örneğin;
[COLOR=white !important]?[/COLOR]
1
2
2
>>>"python".ljust(15)
'python '
'python '
Gördüğümüz gibi yazı soldan başlanarak yazdırıldı boşluk ise sağa doğru bırakıldı.
[COLOR=white !important]?[/COLOR]
1
2
2
1
3)rjust()
Bu metod ise karakter dizilerini sağa yaslar boşluk veya herhangi bir karakteri ise sola doğru yazdırır.
[COLOR=white !important]?[/COLOR]
1
2
2
>>>"python".rjust(15)
' python'
' python'
veya
[COLOR=white !important]?[/COLOR]
1
2
2
>>>"python".rjust(15,"#")
'#########python'
'#########python'
Şimdi bu öğrendiklerimizi bir örnekte toplarsak:
[COLOR=white !important]?[/COLOR]
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/env python
# -*- coding: utf-8 -*-
distro = ["Ubuntu", "Python", "SuSe", "Pardus",
"Fedora", "Linux", "Özgür", "Yazılım",
"Red Hat", "PC", "Gelecek", "Kali"]
for k, v in enumerate(distro):
if k % 4 == 0:
print
print "%s"%(v.ljust(15)),
# -*- coding: utf-8 -*-
distro = ["Ubuntu", "Python", "SuSe", "Pardus",
"Fedora", "Linux", "Özgür", "Yazılım",
"Red Hat", "PC", "Gelecek", "Kali"]
for k, v in enumerate(distro):
if k % 4 == 0:
print "%s"%(v.ljust(15)),
Bu örneğin ekran çıktısı:
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
Ubuntu Python SuSe Pardus
Fedora Linux Özgür Yazılım
Red Hat PC Gelecek Kali
Fedora Linux Özgür Yazılım
Red Hat PC Gelecek Kali
Yazdığımız kodda ljust() metodunu kullandığımız için ekran çıktısı sola yaslanmış şekilde ortaya çıktı.
4)zfill()
Bu metod sayesinde karakter dizimizin başına istediğimiz kadar "0" koyabiliyoruz.
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
1
KARAKTER DEĞİŞTİRMİ
replace()
Bu metod sayesinde yazdığımız karakter dizisindeki herhangi bir harfi değiştirebilir veya silebiliriz.Bu metodun kullanım şekli:
karakter_dizisi.replace("eski_karakter","yeni_karakter")
Örnek vermemiz gerekirse;
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>>a = "Korsan Değil Özgür Yazılım"
>>>print a.replace("a","ş")
Korsşn Değil Özgür Yşzılım
>>>print a.replace("a","ş")
Korsşn Değil Özgür Yşzılım
Örnekte "a" harfi yerine "ş" harfi yazdık.
Eğer kaç tane karakter üzerinde değişiklik yapacağımızı bellirtmek istiyorsak;
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>>a = "Korsan Değil Özgür Yazılım"
>>>print a.replace("a","ş",1)
Korsşn değil Özgür Yazılım
>>>print a.replace("a","ş",1)
Korsşn değil Özgür Yazılım
Burada da gördüğümüz gibi ilk "a" harfi yerine "ş" geldi fakat ikinci "a" harfi aynı şekilde kaldı. Çünkü biz kodumuzda 1 tane "a" harfinin değiştirilmesini istedik.
Eğer karakter dizimizden harf sildirmek istersek bunun için de ;
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>>a = "Korsan Değil Özgür Yazılım"
>>>print a.replace("a","")
Korsn Değil Özgür Yzılım
>>>print a.replace("a","")
Korsn Değil Özgür Yzılım
KARAKTER DİZİLERİNİN BAŞLANGIÇ VE BİTİŞ DEĞERLERİNİ SORGULAMAK
Bu kısımda yazdığımız karakter dizilerinin başlangıç ve bitiş değerlerini nasıl inceleyeceğimizi öğreneceğiz. Örneklerle daha iyi açıklayabiliriz.
1)startswith()
Karakter dizilerinin başlangıç harfini incelememizi sağlayacak olan metoddur.
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>> a = "python"
>>> a.startswith("p")
True
>>> a.startswith("p")
True
Karakter dizimizin ilk harfi "e" olduğu için true değeri döndü.
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>> a = "python"
>>> a.startswith("c")
False
>>> a.startswith("c")
False
Karakter dizimizin ilk harfi "c" olmadığı için false değeri döndü.
Bu metodu liste yönteminde de kullanabiliriz. Daha geniş bir örnek verirsek:
[COLOR=white !important]?[/COLOR]
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
>>> liste = ["elma","erik","kiraz","kestane","portakal"]
>>> for i in liste:
...if i.startswith("e"):
...i.replace("e","a")
...if i.startswith("k"):
i.replace("k","s")
alma
arik
siraz
sestane
>>> for i in liste:
...if i.startswith("e"):
...i.replace("e","a")
...if i.startswith("k"):
i.replace("k","s")
alma
arik
siraz
sestane
Bu örneğimizde ise hem liste elemanlarının baş harflerine göre seçtik hem de seçtiğimiz elemanlarının başharflerini önceden öğrendiğimiz replace() metoduyla değiştirdik.
2)endswith()
Karakter dizilerinin son harflerini incelememizi sağlayacak olan metoddur. Örneğin;
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>> a = "python"
>>> a.endswith("n")
True
>>> a.endswith("n")
True
Karakter dizimizin son harfi "n" ile bittiği için true değerini döndürdü.
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>> a = "python"
>>> a.endswith("b")
False
>>> a.endswith("b")
False
Karakter dizimiz "b" harfi ile bitmediği için false değerini döndü.
Şimdi listelerden bir örnek verelim:
[COLOR=white !important]?[/COLOR]
1
2
3
4
5
6
7
2
3
4
5
6
7
>>> liste = ["korsan","değil!","özgür","yazılım!"]
>>> for i in liste:
... if i.endswith("!")
... i.replace("!","")
değil
yazılım
>>> for i in liste:
... if i.endswith("!")
... i.replace("!","")
değil
yazılım
Örnekte yaptığımız şey listedeki "!" ile biten elemanların son karakterini silip ekrana yazdırmak.
KARAKTER DİZİLERİNİ SAYMA
count()
Bu metodla karakter dizimizin sayımını yapabiliyoruz. Mesela yazdığımız bir karakter dizisinin içinde bir hrfte kaç tane olduğunu bu metodla öğrenebiliriz. Bir örnekle
daha iyi anlayabiliriz.
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>> a = "korsan değil özgür yazılım"
>>> a.count("a")
2
>>> a.count("a")
2
Yazdığımız karakter dizisinde "a" harfinden iki tane bulunduğu için sonuç 2 olarak döndü. Gelin şimdi de girdiğimiz bu karakter dizisinde her harften kaç tane olduğunu bulalım.
[COLOR=white !important]?[/COLOR]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# _*_ coding:utf-8 _*_
while True:
#kullanıcıdan bir karakter dizisi alıp bu dizideki boşlukları replace() ile silmek
#Böylece karakter dizisindeki tüm herfleri ele alabilceğiz.
a = raw_input("karakter dizinizi giriniz:").replace(" ","")
#şimdi ise karakter dizisindeki birden fazla olan harfleri teke indireceğiz.
b = a(set)
#son olarak b dizisi içindeki harflerin kaç tane olduğunu ekrana yazdırıyoruz.
for i in b:
print "%s harfinden = %s tane var." %(i,a.count(i))
while True:
#kullanıcıdan bir karakter dizisi alıp bu dizideki boşlukları replace() ile silmek
#Böylece karakter dizisindeki tüm herfleri ele alabilceğiz.
a = raw_input("karakter dizinizi giriniz:").replace(" ","")
#şimdi ise karakter dizisindeki birden fazla olan harfleri teke indireceğiz.
b = a(set)
#son olarak b dizisi içindeki harflerin kaç tane olduğunu ekrana yazdırıyoruz.
for i in b:
print "%s harfinden = %s tane var." %(i,a.count(i))
Bu örneğimizin ekran çıktısı:
karakter dizinizi giriniz:
Şimdi herhangi bir karakter dizisi üzerinden yola çıkalım.
karakter dizinizi giriniz:korsan değil özgür yazılım
Burada a dizisi "korsandeğilözgüryazılım" şeklini alır. Daha sonra b dizisi devreye girer. b dizisi ise "korsandeğilözgüryzılm" şeklini alır. Ekran çıktımız ise:
[COLOR=white !important]?[/COLOR]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
a harfinden = => 2 tane
e harfinden = => 1 tane
d harfinden = => 1 tane
g harfinden = => 1 tane
i harfinden = => 1 tane
k harfinden = => 1 tane
m harfinden = => 1 tane
l harfinden = => 2 tane
o harfinden = => 1 tane
n harfinden = => 1 tane
ğ harfinden = => 1 tane
s harfinden = => 1 tane
r harfinden = => 2 tane
ö harfinden = => 1 tane
y harfinden = => 1 tane
z harfinden = => 2 tane
ı harfinden = => 2 tane
ü harfinden = => 1 tane
e harfinden = => 1 tane
d harfinden = => 1 tane
g harfinden = => 1 tane
i harfinden = => 1 tane
k harfinden = => 1 tane
m harfinden = => 1 tane
l harfinden = => 2 tane
o harfinden = => 1 tane
n harfinden = => 1 tane
ğ harfinden = => 1 tane
s harfinden = => 1 tane
r harfinden = => 2 tane
ö harfinden = => 1 tane
y harfinden = => 1 tane
z harfinden = => 2 tane
ı harfinden = => 2 tane
ü harfinden = => 1 tane
KARAKTER DİZİLERİNİN NİTELİĞİNİ SORGULAMA
Bu kısımda bir karakter dizisinin alfabetik mi nümerik mi yoksa alfanümerik mi olduğunu inceleyeceğimiz metodlar kullanacağız. Hemen örneklerle başlayalım.
1)isalpha()
Bu metod girdiğimiz karakter dizisinin alfabetik olup olmadığını inceler. Eğer alfabetik bir karakter dizisi girmişsek true girmemişsek false değerini döndürür. Bir örnekle
açıklayalım.
[COLOR=white !important]?[/COLOR]
1
2
2
>>> "python".isalpha()
True
True
Burada "python" alfabetik bir karakter dizisi olduğu için true değeri döndü.
[COLOR=white !important]?[/COLOR]
1
2
2
>>> "1020".isalpha()
False
False
Bu örnekte ise "1020" dizisi nümerik olduğu için false değeri döndü.
[COLOR=white !important]?[/COLOR]
1
2
2
>>> "pythondersleri.com".isalpha()
False
False
Burada ise "." karakteri alfabetik bir değer olamdığı için false değeri döndü. Yani bir karakter dizisinin alfabetik olması için tüm karakterlerin alfabetik olması gerekir.
Arada boşluk karakteri bile olmamalıdır.
[COLOR=white !important]?[/COLOR]
1
2
2
>>> "python dersleri".isalpha()
False
False
Alfabetik karakterleri sorgularken yazdığımız karakter dizilerinin Türkçe karakterlerden dolayı hata vermemesi için unicode olarak tanımlamamızda yarar vardır. Örneğin;
[COLOR=white !important]?[/COLOR]
1
2
2
>>> "şeker".isalpha()
False
False
False değeri döndü çünkü "ş" harfi Türkçe karakter olduğu için alfabetik karakter olarak tanımlamadı. Eğer karakter dizisini unicode olarak tanımlarsak bu sorunu ortadan
kaldırmış oluruz.
[COLOR=white !important]?[/COLOR]
1
2
2
1
2)isdigit()
Bu metod ise girdiğimiz karakter dizisinin nümerik olup olmadığını kontrol etmemize yarar.
[COLOR=white !important]?[/COLOR]
1
2
2
1
2
2
>>> "python".isdigit()
False
False
Bu metodla da boşluk veya herhangi bir karakter kullanıldığında false değeri döner.
[COLOR=white !important]?[/COLOR]
1
2
2
>>> "1020 15".isdigit()
False
False
veya
[COLOR=white !important]?[/COLOR]
1
2
2
>>> "1020.15".isdigit()
False
False
3)isalnum()
Bu metod ise karakter dizisinin alfanümerik olup olmadığını inceler. Her alfabetik ya da nümerik karakter aynı zamanda alfanümerik bir karakterdir. (Tam tersi geçerli değildir.
[COLOR=white !important]?[/COLOR]
1
2
2
1
2
2
1
2
2
>>> "python1020".isalnum()
True
True
Gördüğümüz gibi alfabetik ve nümerik karakterleri bir arada kullanabiliyoruz.
Şimdi öğrendiğimiz üç metodu da daha iyi kavramak için bir örnek yapalım.
[COLOR=white !important]?[/COLOR]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
>>> for i in "python1020_?dersleri":
... if i.isalpha():
... print "%s karakteri alfabetik karakterdir." %i
... elif i.isdigit():
... print "%s karakteri nümerik karakterdir." %i
... else:
... print "%s karakteri özel karakterdir." %i
...
p karakteri alfabetik karakterdir.
y karakteri alfabetik karakterdir.
t karakteri alfabetik karakterdir.
h karakteri alfabetik karakterdir.
o karakteri alfabetik karakterdir.
n karakteri alfabetik karakterdir.
1 karakteri nümerik karakterdir.
0 karakteri nümerik karakterdir.
2 karakteri nümerik karakterdir.
0 karakteri nümerik karakterdir.
_ karakteri özel karakterdir.
? karakteri özel karakterdir.
d karakteri alfabetik karakterdir.
e karakteri alfabetik karakterdir.
r karakteri alfabetik karakterdir.
s karakteri alfabetik karakterdir.
l karakteri alfabetik karakterdir.
e karakteri alfabetik karakterdir.
r karakteri alfabetik karakterdir.
i karakteri alfabetik karakterdir.
... if i.isalpha():
... print "%s karakteri alfabetik karakterdir." %i
... elif i.isdigit():
... print "%s karakteri nümerik karakterdir." %i
... else:
... print "%s karakteri özel karakterdir." %i
...
p karakteri alfabetik karakterdir.
y karakteri alfabetik karakterdir.
t karakteri alfabetik karakterdir.
h karakteri alfabetik karakterdir.
o karakteri alfabetik karakterdir.
n karakteri alfabetik karakterdir.
1 karakteri nümerik karakterdir.
0 karakteri nümerik karakterdir.
2 karakteri nümerik karakterdir.
0 karakteri nümerik karakterdir.
_ karakteri özel karakterdir.
? karakteri özel karakterdir.
d karakteri alfabetik karakterdir.
e karakteri alfabetik karakterdir.
r karakteri alfabetik karakterdir.
s karakteri alfabetik karakterdir.
l karakteri alfabetik karakterdir.
e karakteri alfabetik karakterdir.
r karakteri alfabetik karakterdir.
i karakteri alfabetik karakterdir.
Ekran çıktımız bu şekilde olacaktır. Buradaki alfabetik ve nümerik karakterler aynı zamanda alfanümeriktirler. Ancak özel karakterler bu kapsam içine girmezler.
SEKME BOŞLUKLARINI GENİŞLETME
expandtabs()
Yazdığımız bir karakter dizisinde ne kadar boşluk bırakmak istediğimizi belirtebileceğimiz bir metoddur.
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>> a = "Korsan\tdeğil\tözgür\tyazılım"
>>> print a.expandtabs(5)
Korsan değil özgür yazılım
>>> print a.expandtabs(5)
Korsan değil özgür yazılım
Gördüğümüz gibi karakterlerin arasında 5 tane boşluk bırakabildik.
KARAKTER KONUMU BULMA
Bu kısımda yazdığımız karakter dizisinde bir karakterin konumunu bulmada kullanacağımız metodları öğreneceğiz. Sırayla başlayalım.
1)find()
Bu metod karakter dizimizdeki herhangi bir karakterini bulmada yardımcı olur bize. Bu metod karakter dizilerini soldan sağa doğru okur. Bir örnekle açıklayalım.
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>> a = "ekmek"
>>> a.find("e")
0
>>> a.find("e")
0
"t" harfi karakter dizimizde 2. indeksli karakter olduğu için "2" değeri geri döndü.
Eğer aradığımız arf karakter dizimizde bulunmuyorsa "-1" değeri döner. Örneğin;
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>> a = "python"
>>> a.find("s")
-1
>>> a.find("s")
-1
Bu metodla istediğimiz aralık içerisinde de arama yapabiliriz. Bunun için kullanacağımız ifade;
"karakter_dizisi".find("aranacak_karakter",baslangıç_değeri,bitiş_değeri)
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>> a = "python"
>>> a.find("h",2,5)
3
>>> a.find("h",2,5)
3
2. ve 5. indeks arasında "h" harfi 3. indeste yer alıyor.
2)rfind()
Bu metod find() metodu ile aynı işlemleri yapar. Tek farkı karakter dizilerini sağdan sola doğru okur.
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>> a = "ekmek"
>>> a.rfind("e")
3
>>> a.rfind("e")
3
Bu örneği yukarıda find() metodu ile yaptığımızda bize 0 değerini döndürmüştü. Çünkü find() metodu karakter dizisini soldan sağa doğru okur. Bu örneğimizde ise rfind() metodu
kullandığımız için 3 değeri döndü. Çünkü rfind() metodu karakter dizisini sağdan sola doğru okudu ve karşısına ilk çıkan "e" harfinin indeksini değer olarak döndürdü.
3)index()
Bu metod find() metodu ile aynı işi yapıyor. Tek farkı karakter dizisinde olmayan eleman girdiğimizde "-1" değeri yerine hata mesajı döndürmesidir.
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
1
2
3
4
5
6
2
3
4
5
6
>>> b = "python"
>>> b.index("s")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
</module></stdin>
>>> b.index("s")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
</module></stdin>
4)rindex()
Bu metod da index() metodu ile aynı işi yapıyor. Tek farkı karakter dizisini sağdan sola doğru okuması.
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>> a = "ekmek"
>>> a.rindex("e")
3
>>> a.rindex("e")
3
Bu metod da olmayan bir karakteri aradığımızda hata mesajı döndürür.
[COLOR=white !important]?[/COLOR]
1
2
3
4
5
6
2
3
4
5
6
>>> b = "python"
>>> b.rindex("s")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
</module></stdin>
>>> b.rindex("s")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
</module></stdin>
a)join()
Bu metodu yazdığımız karakter dizilerinin arasına bişey koymak istediğimiz zaman kullanacağız. Şöyleki:
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>> a = "Python"
>>> ".".join(a)
P.y.t.h.o.n
>>> ".".join(a)
P.y.t.h.o.n
Dikkat edersek yadığımız kodda "a.join()" diye bir ifade kullanmadık. Çünkü bu metodu kullanırken uygulayacağımız işareti önce, hangi karakter dizisine uygulayacağımızı ise
parantez içerisinde belirtiyoruz.
Bu metodu listelerde de kullanabiliriz.
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>> liste = ["Korsan","değil","özgür","yazılım"]
>>> print ";".join(liste)
Korsan;değil;özgür;yazılım
>>> print ";".join(liste)
Korsan;değil;özgür;yazılım
Daha dinamik bir örnek verirsek;
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>> liste = ["C:","Program Files","Python"]
>>> print "\\".join(liste)
C:\\Program Files\\Python
>>> print "\\".join(liste)
C:\\Program Files\\Python
KARAKTER DİZİLERİNİ PARÇALARA AYIRMA
Karakter dizilerini parçalara ayırmada iki yöntem kullanacağız.
1)partititon()
Bu metodu kullanarak bir karakter dizisini üç parçaya bölebiliyoruz. Bu metod karakter dizisini soldan sağa okur.
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>> a = "adana"
>>> a.partition("a")
('','a','dana')
>>> a.partition("a")
('','a','dana')
Eğer yazdığımız karakter ifademizde yoksa şu şekilde bir ayırma işlemi yapıyor.
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
>>> b = "python"
>>> b.partition("a")
('python','','')
>>> b.partition("a")
('python','','')
2)rpartition()
Bu metod partition() metodu ile aynı aynı işe yapar. Tek farkı karakter dizilerini sağdan sola doğru okumasıdır.
[COLOR=white !important]?[/COLOR]
1
2
3
2
3
1
KAYNAKLAR
https://www.google.com.tr/
http://www.istihza.com
[/COLOR]