Python KARAKTER DİZİLERİ

LeGoLaS

ikra
Emektar Yönetici
Profil Bilgileri
Üyelik Tarihi :
1 Ağu 2008
Bulunduğu Yer :
Türkiye
Mesajları :
9,905
Puanları :
4,060
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;


[COLOR=white !important]?
1
2​
>>>"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​
>>>type("Python")
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​
>>>type(Pyhton)
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​
>>>a=5
>>>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​
>>>a="5"
>>>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​
>>>a=5
>>>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​
>>>print "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​
>>>"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​
>>>print "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​
>>>print 'Pyhton'da karakter dizileri (string) çalışıyoruz.'
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​
>>>print '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​
>>>print """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​
>>>print """
...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​
Python Konuları
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​
>>>ad = "Sultan"
>>>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​
>>>ad = "Sultan"
>>>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​
>>>a = ""
>>>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​
>>>ad = "Sultan"
>>>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​
# -*- 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"]​



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​
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​




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​
>>>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​
>>>a = "Sultan"
>>>a += "Düzgün"
>>>print a
SultanDüzgün​



[COLOR=white !important]?[/COLOR]​
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​
>>>a = "Python"
>>>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​
>>>liste = ["Python","çalışıyor","ve","öğ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​
>>>a = "Python"
>>>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​
>>>a = "Python"
>>>print a[0:4]
Pyth​



yazabiliriz. Veya sıfırı hiç koymayız.

[COLOR=white !important]?[/COLOR]​
1
2
3​
>>>a = "Python"
>>>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​
>>>a = "Python"
>>>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​
>>>a = "Python öğreniyoruz."
>>>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​
>>>a = "Python öğreniyoruz."
>>>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​
>>>a = "Python öğreniyoruz."
>>>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​
>>>a = "Python öğreniyoruz."
>>>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​
# -*- 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​



Ö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​
>>>a = "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​
>>>liste = ["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​
>>>a = "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​
>>>a = u"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​
>>>a = "python"
>>>print a.upper()
PYTHON​




[COLOR=white !important]?[/COLOR]​
1
2
3​
>>>b = u"korsan değil özgür yazılım"
>>>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​
>>>a = "PYTHON"
>>>print a.lower()
python​



[COLOR=white !important]?[/COLOR]​
1
2
3​
>>>b = u"KORSAN DEĞİL ÖZGÜR YAZILIM"
>>>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​
>>>a = "python"
>>>print a.swapcase()
PYTHON​



[COLOR=white !important]?[/COLOR]​
1
2
3​
>>>b = "PYTHON"
>>>print b.swapcase()
python​



[COLOR=white !important]?[/COLOR]​
1
2
3​
>>>c = "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​
>>>a = "python"
>>>a.islower()
True​



[COLOR=white !important]?[/COLOR]​
1
2
3​
>>>b = "Korsan değil özgür yazılım"
>>>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​
>>>a = "PYTHON"
>>>a.isupper()
True​



[COLOR=white !important]?[/COLOR]​
1
2
3​
>>>b = "Korsan DEĞİL Özgür Yazılım"
>>>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​
>>>a = "Korsan Değil Özgür Yazılım"
>>>a.istitle()
True​



[COLOR=white !important]?[/COLOR]​
1
2
3​
>>>b = "Python öğreniyoruz."
>>>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​
>>>a = " "
>>>a.isspace()
True​



[COLOR=white !important]?[/COLOR]​
1
2
3​
>>>b = "Korsan değil özgür yazılım"
>>>b.isspace()
False​



[COLOR=white !important]?[/COLOR]​
1
2
3​
>>>c = ""
>>>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​
>>>a = "ş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​
>>>a = u"şekerli çay"
>>>a.capitalize()
Şekerli çay​



sorunu ortadan kaldırmış oluruz.

[COLOR=white !important]?[/COLOR]​
1
2
3​
>>>a = "Gün Python Çalışma Günüdür"
>>>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​
>>>a = u"Gün Python Çalışma Günüdür"
>>>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​
>>>a = u"ş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​
>>>a = u"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​
>>>a = "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​
>>>a = "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​
>>>"python".center(15,"#")
#####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​
>>>"python".center(5)
'python'​



veya

[COLOR=white !important]?[/COLOR]​
1
2​
>>>"python".center(5,"#")
'python'​



[COLOR=white !important]?[/COLOR]​
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​
>>>"python".ljust(15)
'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​
>>>"python".ljust(15,"#")
'python#########'​



[COLOR=white !important]?[/COLOR]​
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​
>>>"python".rjust(15)
' python'​



veya

[COLOR=white !important]?[/COLOR]​
1
2​
>>>"python".rjust(15,"#")
'#########python'​



Şimdi bu öğrendiklerimizi bir örnekte toplarsak:

[COLOR=white !important]?[/COLOR]​
1
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)),​



Bu örneğin ekran çıktısı:

[COLOR=white !important]?[/COLOR]​
1
2
3​
Ubuntu Python SuSe Pardus
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​
>>>sayi = "5"
>>>sayi.zfill(3)
005​



[COLOR=white !important]?[/COLOR]​
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​
>>>a = "Korsan Değil Özgür Yazı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​
>>>a = "Korsan 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​
>>>a = "Korsan Değil Özgür Yazı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​
>>> a = "python"
>>> 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​
>>> a = "python"
>>> 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​
>>> 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​



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​
>>> a = "python"
>>> 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​
>>> a = "python"
>>> 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​
>>> liste = ["korsan","değil!","özgür","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​
>>> a = "korsan değil özgür yazılım"
>>> 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​
# _*_ 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))​




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​
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​




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​
>>> "python".isalpha()
True​



Burada "python" alfabetik bir karakter dizisi olduğu için true değeri döndü.

[COLOR=white !important]?[/COLOR]​
1
2​
>>> "1020".isalpha()
False​



Bu örnekte ise "1020" dizisi nümerik olduğu için false değeri döndü.

[COLOR=white !important]?[/COLOR]​
1
2​
>>> "pythondersleri.com".isalpha()
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​
>>> "python dersleri".isalpha()
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​
>>> "şeker".isalpha()
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​
>>> u"şeker".isalpha()
True​



[COLOR=white !important]?[/COLOR]​
1​


2)isdigit()



Bu metod ise girdiğimiz karakter dizisinin nümerik olup olmadığını kontrol etmemize yarar.
[COLOR=white !important]?[/COLOR]​
1
2​
>>> "1020".isdigit()
True​



[COLOR=white !important]?[/COLOR]​
1
2​
>>> "python".isdigit()
False​



Bu metodla da boşluk veya herhangi bir karakter kullanıldığında false değeri döner.

[COLOR=white !important]?[/COLOR]​
1
2​
>>> "1020 15".isdigit()
False​



veya

[COLOR=white !important]?[/COLOR]​
1
2​
>>> "1020.15".isdigit()
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​
>>> "python".isalnum()
True​



[COLOR=white !important]?[/COLOR]​
1
2​
>>> "1020".isalnum()
True​



[COLOR=white !important]?[/COLOR]​
1
2​
>>> "python1020".isalnum()
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​
>>> 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.​



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​
>>> a = "Korsan\tdeğil\tözgür\tyazı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​
>>> a = "ekmek"
>>> 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​
>>> a = "python"
>>> 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​
>>> a = "python"
>>> 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​
>>> a = "ekmek"
>>> 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​
>>> a = "ekmek"
>>> a.index("e")
0​




[COLOR=white !important]?[/COLOR]​
1
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>​



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​
>>> a = "ekmek"
>>> 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​
>>> b = "python"
>>> 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​
>>> a = "Python"
>>> ".".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​
>>> 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​
>>> 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​
>>> a = "adana"
>>> 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​
>>> b = "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​
>>> a = "adana"
>>> a.rpartition("a")
('adan','a','')​



[COLOR=white !important]?[/COLOR]​
1​


KAYNAKLAR



https://www.google.com.tr/
http://www.istihza.com
[/COLOR]
 
Üst