Evet yeni bir konuya geçiş yapıyoruz.
Düzenli ifadeler her programlama dilinde oluduğu gibi pythonda da karşımıza çıkıyor.
Ama söylemeliyim ki python'nun belkide en karmaşık konusu.Ama elimden geldiğince basite indirgeyip
anlatmaya çalışacağım.Bu kadar konuşmadan sonra başlayalım...
Başlangıç olarak re modülünü programa çağırmamız gerekiyor ki daha öncede yaptığımız gibi
>>>import re
Bunun arkasından dir(re) komutu ile kullanacağımız metodları ekrana yazdırabiliriz.
Gördüğünüz gibi biraz fazla.Tabiki hepsini anlatmayacağım ama bu anlatmayacaklarımın işinize
yaramayacağı anlamına gelmez.
Match() Metodu
Bu metod daha önce işlediğimiz split() ve startswith() metodlarıyla aynı işlevdedir.
Görevi ise bir karakter dizisi içinde bir kelime aramamızı sağlar fakat aradığımız kelime karakter
dizisinin başında olması gerekir.
>>> x="python dilini öğreniyorum"
>>> re.match("python",x)
<_sre.SRE_Match object at 0x0000000002D7C5E0>
Gördüğümüz gibi burada python kelimesi karakter dizimiz içinde var fakat python'nun bize döndürdüğü
mesaj pekde anlaşılır değil ama aradığımız kelimenin karakter dizisinin içinde varolduğunu söylüyor
Ama şunu yazarsak
>>> re.match("dilini",x)
herhangi bir çıktı ekrana gelmeyecektir.Aslında gelecektir fakat bunu görmek için kodun başına sadece
print ifadesini eklemek yeterli olacaktır.Peki karakter dizimizde "dilini" kelimesi var neden mesaj
vermedi derseniz match metdounun açıklama kısmının son cümlesine bakmanızı tavsiye ederim.
Split ve startswith ile aynı işlevde demiştik
>>> a.split()[0]=="python"
True
>>> a.split()[0]=="dilini"
False
>>> a.startswith("python")
True
>>> a.startswith("dilini")
False
Eğer amaç karakter dizisi başında bulunan bir kelimeyi bulmaksa Split ve startswith metodları kullanılmalıdır.
Çünkü Split ve startswith, match metodundan daha hızlıdırlar.
>>> y="abcdefg"
>>> re.match("abc")
<_sre.SRE_Match object at 0x0000000002E8C5E0>
>>> re.match("abcdef",y)
<_sre.SRE_Match object at 0x0000000002E8C648>
print (re.match("abcg",y))
none
Ama sitersek arattığımızda ne bulunduğunu da görebiliriz
>>> re.match("abcg",y)
>>> a="django,pythonnun çatısıdır"
>>> b=re.match("django",a)
>>> b.group()
'django'
Evet hemen bir programa yazalım
import re
x=input("Bir kelime giriniz: ")
y=re.match("python",x)
if y:
print ("Kelimeniz (",y.group(),")ile başlıyor")
else:
print ("Kelimeniz python ile başlamıyor")
bu programı yazıp masaüstünüze kaydedip deneyin ve siz de daha farklı programlar yazmayı deneyin ki
bu dersler dersler bir işe yarasın :)
Search() Metodu
Bu metod ile de karakter dizimizin tamammında arama yapabiliriz
>>>a="python dilinde en karışık konu düzenli ifadeler."
>>>re.search("ifadeler",a)
<_sre.SRE_Match object at 0x0000000002E2C648>
Bu kodla ilgili bir program yazarsak
import re
x=input("Bir cümle giriniz: ")
y=re.search("http://www.",x)
if y:
print("cümlenizde internet adresi bulundu")
else:
print("cümlenizde herhengi bir internet adresi yok")
Findall() Metodu
Bu metod ise yine search metodunun yaptığı işi yapar,ayrıca kelimenin karakter dizisi içinde
kaç tane olduğunu biz gösterir.
>>> import re
>>> z="Python'un son derece kolay okunabilir olması düşünülmüştür. Bu yüzden örneğin küme parantezleri yerine girintileme işlemi kullanılır. Hatta bazı durumlarda girintileme işlemine dahi gerek kalmadan kodun ilgili bölümü tek satırda yazılabilir. Böylece Python, program kodunuzu en az çaba ile ve hızlıca yazmanıza imkân tanır. Sade sözdizimi ile diğer programlama dillerinden üstündür."
>>> re.findall("python",z)
['Python', 'Python']
>>> c="Python programalama diline başlayalı çok olmadıki,pythonu sevmeye başladım"
>>> re.findall("python",c)
['python']
Yukarıda 2 tane örnek verdim.Fakat bunların ikisindede 2 tane python yazısı olamsına rağmen
birincisinde 2 tane python yazısı bul ikincisinde ise 1 tane.Bunun nedeni ise findall aranınlan
kelimeye tam olarak uyanı arar ve büyük küçük harf farkı bunu etkiler.
16 Şubat 2012 Perşembe
3 Şubat 2012 Cuma
Karakter Dizi Metodları-4
Partition metodu
Bu metod ile bir karakter dizisini belli bir ölçüte göre ayırabiliriz.
>>> a="bartın"
>>> a.partition("rt")
('ba', 'rt', 'ın')
>>> a.partition("b")
('', 'b', 'artın')
Eğer aratacağımız karakter, bizim karakter dizimiz içinde yok ise
>>> a.partition("P")
('bartın', '', '')
RPartition metodu
Partition metodu ile aynı görevde olup tek farkı Partition metodu soldan sağa RPartition metodu
ise sağdan sola doğru okuma yapar.
>>> a.rpartition("n")
('bartı', 'n', '')
Strip Metodu
Bu metod ise karakter dizimizin başında ve sonunda yer alan boşluk ve yeni satır gibi karakterleri
kaldırır.
>>> b=" Yönetim Bilişim Sistemleri "
>>> b.strip()
'Yönetim Bilişim Sistemleri'
RStrip Metodu
Bu metod ise strip metodunun sağdece sonuna yani sağındaki boşluk ve yeni satır karakterleri kaldırır.
>>> b.rstrip()
' Yönetim Bilişim Sistemleri'
LStrip Metodu
Bu metodda karakter dizimizin başında yani solundaki boşluk ve yeni satır karakterleri kaldırır.
>>> b.lstrip()
'Yönetim Bilişim Sistemleri '
Splitlines Metodu
Bu metod ile karakter dizimizde yeni satır noktalarından itibaren keserek, bunları bir liste
haline çevirebilmemizi sağlıyor.
>>> c="Yönetim\nBilişim\nSistemleri"
>>> c.splitlines()
['Yönetim', 'Bilişim', 'Sistemleri']
Split Metodu
Bu metod join() metoduna benzemektedir.join() metoduyla bir listenin öğelerini karakter dizisi
şekline çeviriyorduk.Split() ie bu işlemin tam tersini yapıyor.
>>> f="Python programlama dili"
>>> f.split()
['Python', 'programlama', 'dili']
Bu şekilde ayırabildiği gibi
>>> f.split(",")
['Python programlama dili']
şeklindede birleştirebilir.
Diğer bir özelliği ise bir karakter dizisini kaç kez kesme işleminin uygulanmasını belirlememiz
>>> site="wwww.pythondili.blogspot.com"
>>> site.split(".",2)
['wwww', 'pythondili', 'blogspot.com']
görüldüğü gibi karakter dizimizdeki . alanlarından 2 tanesinde ayırma işlemi yaptı.Eğer
site.split(".",3) yapsaydık
>>> site.split(".",3)
['wwww', 'pythondili', 'blogspot', 'com']
eğer ayıracağımız karakter, bizim karakter dizimizde yok ise
>>> site.split(",",3)
['wwww.pythondili.blogspot.com']
ayırma işlemi yapmayacaktır.
Bu metod ile bir karakter dizisini belli bir ölçüte göre ayırabiliriz.
>>> a="bartın"
>>> a.partition("rt")
('ba', 'rt', 'ın')
>>> a.partition("b")
('', 'b', 'artın')
Eğer aratacağımız karakter, bizim karakter dizimiz içinde yok ise
>>> a.partition("P")
('bartın', '', '')
RPartition metodu
Partition metodu ile aynı görevde olup tek farkı Partition metodu soldan sağa RPartition metodu
ise sağdan sola doğru okuma yapar.
>>> a.rpartition("n")
('bartı', 'n', '')
Strip Metodu
Bu metod ise karakter dizimizin başında ve sonunda yer alan boşluk ve yeni satır gibi karakterleri
kaldırır.
>>> b=" Yönetim Bilişim Sistemleri "
>>> b.strip()
'Yönetim Bilişim Sistemleri'
RStrip Metodu
Bu metod ise strip metodunun sağdece sonuna yani sağındaki boşluk ve yeni satır karakterleri kaldırır.
>>> b.rstrip()
' Yönetim Bilişim Sistemleri'
LStrip Metodu
Bu metodda karakter dizimizin başında yani solundaki boşluk ve yeni satır karakterleri kaldırır.
>>> b.lstrip()
'Yönetim Bilişim Sistemleri '
Splitlines Metodu
Bu metod ile karakter dizimizde yeni satır noktalarından itibaren keserek, bunları bir liste
haline çevirebilmemizi sağlıyor.
>>> c="Yönetim\nBilişim\nSistemleri"
>>> c.splitlines()
['Yönetim', 'Bilişim', 'Sistemleri']
Split Metodu
Bu metod join() metoduna benzemektedir.join() metoduyla bir listenin öğelerini karakter dizisi
şekline çeviriyorduk.Split() ie bu işlemin tam tersini yapıyor.
>>> f="Python programlama dili"
>>> f.split()
['Python', 'programlama', 'dili']
Bu şekilde ayırabildiği gibi
>>> f.split(",")
['Python programlama dili']
şeklindede birleştirebilir.
Diğer bir özelliği ise bir karakter dizisini kaç kez kesme işleminin uygulanmasını belirlememiz
>>> site="wwww.pythondili.blogspot.com"
>>> site.split(".",2)
['wwww', 'pythondili', 'blogspot.com']
görüldüğü gibi karakter dizimizdeki . alanlarından 2 tanesinde ayırma işlemi yaptı.Eğer
site.split(".",3) yapsaydık
>>> site.split(".",3)
['wwww', 'pythondili', 'blogspot', 'com']
eğer ayıracağımız karakter, bizim karakter dizimizde yok ise
>>> site.split(",",3)
['wwww.pythondili.blogspot.com']
ayırma işlemi yapmayacaktır.
Etiketler:
partition,
split,
splitlines,
strip
Yer:
Bartın, Türkiye
23 Ocak 2012 Pazartesi
Asp.Net Site içi Arama Yapma Detaylı Anlatım
1. Adım ) Master Sayfada arama alanı oluşturma ve gerekli kodlaması..
İlk Önce bir Master Page oluşturup... Bir TextBox ve bir Button atıyoruz..
Daha sonra Sitede Ara! butonunun click Event'inde aşağıdaki kodları yazıyoruz..
1) Textbox'a girilen değer bir kelimemi yoksa birden fazlamı onu kontrol ediyorum. Eğer içinde boşluk varsa birden fazladır.
2) Daha sonra textbox'taki değeri boşluğa göre Split edip bir diziye atıyorum.. Kelimeleri tek tek işleyebilmek için.
3) Querystring üzerinde kullanabilmek için string yol değişkeni değeri boş olacak şekilde tanımlıyorum.
4) Dizinin içinde dizinin boyutu kadar dönüyorum
5) ve yol değişkenin querystring yolu olcak şekilde oluşturuyorum.
bu for döngüsünün sonucu şu şekilde çıktı vericek...
kelime0=....&kelime1=...&
6) Yukardaki sorguyu oluştururken her dönüşte += yaparak üzerine ekleme yaptıgı için sonda bir tane " & " işareti fazladan olacak.. Onu substringle yol'dan çıkarıyorum..
7) Daha sonra Response redirectla arama sayfasına querystring yolunu veriyorum..
Şöyle bir çıktı olmuş oluyor.....
arama.aspx?kelime0=...&kelime1=....&....
8) Textbox Boşluk içermiyorsa tek kelimeyi querystring'le yolluyorum.
2) Arama.aspx QueryString'ten gelen verileri kullanarak Datalist'e Bind Etmek...
Önce Master Page'ten 1 arama.aspx sayfası türetelim... ve ContentPlaceHolder içine bir tane DataList atalım...
Daha Sonra aşağıdaki kodları yazalım...
1) Kaç tane query var onu öğrenip queryCount değişkeninne atıyorum...
2) Az öncekine benzer şekilde.. Veritabanında arama yaptırcak sorgu değişkenini yine boş olucak şekilde tanımlıyorum..
3) Burda gelen QueryString'ler 1 den fazla ise Or kullanarak birden fazla sqlSorgusu oluşturuyorum..
4) queryString sayısı kadar dönüp sorguyu LIKE arama komutuyla bütün queryString verilerini arattıryorum...
5) Bunun çıktısı şu şekilde olur....
"makaleBaslik LIKE '%kelime0 or makaleBaslik LIKE '%kelime1 or.... %' or " şeklinde olcak..
6) Burası query sayısı 1 ise oluşacak sorgu..
7) Veri okuyorsa
8) Arama.aspx'e attıgım Datalist'e Bind ediyorum
9) Okumuyorsa hata sayfasına gönderiyorum.. Bu kadar.. Çalışmasını göreLim.. Çok güzel şekilde çalıştı yalnız bu kodlar sadece makale başlıklarında arama yapar içerikte arama yapmak istiyorsanız sorguyu çevirebilirsiniz kolay gelsin...
Projenin Çalışır halini linkten indirebilirsiniz.. Veritabanı kendi kodlarınıza göre ayarlayın..
Arkadaşlar sitedeki reklamlara birer kez tıklarsanız sevinirim..
Konu bana aittir alıntılama yaparsanız lütfen siteyi kaynak olarak gösterin!!!..
21 Ocak 2012 Cumartesi
Karakter Dizi Metodlar-3
Expandtabs metodu
Bu metod ile karakter dizimizdeki sekme boşluklarının büyüklüğünü artırabiliyoruz.
>>> x="python\töğreniyorum."
>>> x.expandtabs(5)
'python öğreniyorum.'
FIND metodu
Bu metod ile bir karakter dizisi içindeki bir karakterin kaçıncı konumda olduğunu bize söylüyor.
>>> a="Python kolay bir dil"
>>> a.find("o")
4
Gördüğümüz gibi "o" harfinin kaçıncı karakter(0'dan başladığını hatırlayalım) olduğunu bize verdi.
Ama "Python" dilinden sonra bir "o" harfi olan kelimemiz daha var.Ama python solda sağa doğru
okuma yaptığı için ilk "o" harfinin bulunduğu değeri verdi.
eğer arama yaptığımız harf yok ise -1 değerini bize döndürecektir.
>>> a="Python"
>>> a.find("i")
-1
Python bize aralık olarak arama yapmada imkanı veriyor:
>>> a="Python kolay bir dil"
>>> a.find("n",0,6)
5
Bu örnekte 0 ile 6. karakterler arasını araştırp bize "n" harfinin kaçıncı karakter olduğunu
söylemesini istedik.
Rfind metodu
Bu metod find metodu ile aynı görevi yapar fakat tek farkı karakter dizilerini soldan sağa değilde
sağdan sola doğru okur.
>>> a="python"
>>> a.rfind("p")
0
İndex metodu
find() metodu ile aynı işelve sahiptir.Tek değişik yönleri;fin() metodu bir karakteri bulamadığında
-1 değerini döndürür,index() metodu ise hata mesajı.
rindex metodu
Bu da index metodunun soldan sağa yaptığı okuma işini sağdan sola yapmaktadır.
join metodu
Bu metod karakter dizimizdeki her karakter arasına yeni bir karakter ekleme imkanı verir.
>>> a="python"
>>> "-".join(a)
'p-y-t-h-o-n'
>>> a=["php","jquery","ajax","android","python","c#","c++","java"]
>>> ":".join(a)
'php:jquery:ajax:android:python:c#:c++:java'
translate metodu
Bu metodu anlatmak hem karışık hemde zor olduğu için bu metodu istihza.com'dan alıntı yapacağım.
str.maketrans ve translate Metotları
Bu iki metot birbiriyle bağlantılı olduğu için, bunları bir arada göreceğiz.
Diyelim ki elimizde bir karakter dizisi var ve biz bu karakter dizisini şifrelemek istiyoruz. Bunun için şöyle bir kod yazdığımızı varsayalım:
sözlük = {"a":"0",
"b":"1",
"c":"2",
"ç":"3",
"d":"4",
"e":"5",
"f":"6",
"g":"7",
"ğ":"8",
"h":"9",
"ı":"a",
"i":"b",
"j":"c",
"k":"ç",
"l":"d",
"m":"e",
"n":"f",
"o":"g",
"ö":"h",
"p":"ı",
"r":"i",
"s":"j",
"ş":"k",
"t":"l",
"u":"m",
"ü":"n",
"v":"o",
"y":"ö",
"z":"p",
" ":" "}
kardiz = "python programlama dili"
şifreli = ""
for i in kardiz:
şifreli = şifreli + sözlük[i]
print(şifreli)
Bu kodu çalıştırdığımız zaman şöyle bir çıktı alırız:
ıöl9gf ıig7i0ed0e0 4bdb
Aslında bu çıktıda “python programlama dili” yazıyor. Biz yukarıdaki kodlar yardımıyla karakter dizimizi şifreledik. Python, yazdığımız sözlüğü temel alarak “p” harfi gördüğü yere “ı” harfini; “y” harfi gördüğü yere “ö” harfini, “t” gördüğü yere “l” harfini... yerleştiriyor. Böylece karakter dizimizin çıplak gözle anlaşılmasını engelleyecek bir çıktı veriyor bize. İsterseniz yukarıdaki kodları bir fonksiyon olarak tanımlayıp çok daha verimli bir hale getirebiliriz:
sözlük = {"a":"0",
"b":"1",
"c":"2",
"ç":"3",
"d":"4",
"e":"5",
"f":"6",
"g":"7",
"ğ":"8",
"h":"9",
"ı":"a",
"i":"b",
"j":"c",
"k":"ç",
"l":"d",
"m":"e",
"n":"f",
"o":"g",
"ö":"ğ",
"p":"h",
"r":"ı",
"s":"i",
"ş":"j",
"t":"k",
"u":"l",
"ü":"m",
"v":"n",
"y":"o",
"z":"ö",
" ":" "}
def sifrele(kardiz):
şifreli = ""
for i in kardiz:
şifreli = şifreli + sözlük[i]
return şifreli
print(sifrele("python programlama dili"))
Fonksiyonumuzu bir kez bu şekilde tanımladıktan sonra sadece sifrele() fonksiyonunu kullanarak karakter dizilerimizi şifreleyebiliriz:
>>> print(sifrele("merhaba dünya"))
e5i9010 4nfö0
Burada bazı sorunlar olduğu açık. Mesela sözlük içinde tanımlanmamış karakter kullanıldığında programımız hata verecektir. Ayrıca açıkçası bu kodlar biraz “kalabalık” görünüyor göze...
İsterseniz yukarıdaki işlemi daha sade ve performanslı bir biçimde yapmanın bir yolu vardır Python’da...
Bunun için str.maketrans() ve translate() metotlarından yararlanacağız. Şu kodlara bir bakalım:
kaynak_dizi = "abcçdefgğhıijklmnoöprsştuüvyz"
hedef_dizi = "0123456789abcçdefgğhıijklmnoö"
çeviri_nesnesi = str.maketrans(kaynak_dizi, hedef_dizi)
kardiz = "python programlama dili"
sonuç = kardiz.translate(çeviri_nesnesi)
print(sonuç)
Burada yaptığımız şey çok basit. Öncelikle “kaynak_dizi” adında bir karakter dizisi oluşturduk. Amacımız bir karakter dizisi içindeki karakterleri başka karakterlere dönüştürmek. İşte bu “kaynak_dizi” adlı karakter dizisi özgün kaynak dizimizin karakterlerini temsil ediyor. Alt satırdaki “hedef_dizi” adlı karakter dizisi ise, kaynak dizi içindeki karakterlerin dönüştürüleceği karakterleri gösteriyor. Bu iki karakter dizisini, bir üstteki kodlarda sözlük halinde yazmıştık. Buradaki “kaynak_dizi” adlı karakter dizisi bir önceki kodlardaki sözlüğün “anahtar”larının (keys), “hedef_dizi” adlı karakter dizisi ise sözlüğün “değer”lerinin (values) yerini tutuyor.
Karakter dizilerimizi tanımladıktan sonra str.maketrans() metodunu kullanarak bir “çeviri nesnesi” oluşturacağız. Oluşturacağımız bu çeviri nesnesi, biraz önce tanımladığımız “kaynak_dizi” ve “hedef_dizi” adlı karakter dizilerinin öğelerini birbiriyle eşleştirme vazifesi görecek. Zaten “str.maketrans(kaynak_dizi, hedef_dizi)” satırı bu vazifeyi gözler önüne seriyor... Bu arada maketrans() metodunu, öteki metotlardan farklı olarak str.maketrans() şeklinde kullandığımıza özellikle dikkat edin.
Hemen ardından çeviri işlemine tabi tutacağımız karakter dizimizi yazdık. Bu karakter dizimiz “python programlama dili”.
Daha sonra da “sonuç” adlı bir değişken içinde translate() metodundan faydalanarak yukarıda oluşturduğumuz “çeviri_nesnesi”ni bu metoda argüman olarak veriyoruz. Bu metot, “kardiz” adlı karakter dizisini alıp, yukarıda “çeviri_nesnesi” içinde belirlediğimiz formüle göre çeviri işlemine tabi tutuyor ve ortaya şifrelenmiş bir karakter dizisi çıkarıyor...
Bu metod ile karakter dizimizdeki sekme boşluklarının büyüklüğünü artırabiliyoruz.
>>> x="python\töğreniyorum."
>>> x.expandtabs(5)
'python öğreniyorum.'
FIND metodu
Bu metod ile bir karakter dizisi içindeki bir karakterin kaçıncı konumda olduğunu bize söylüyor.
>>> a="Python kolay bir dil"
>>> a.find("o")
4
Gördüğümüz gibi "o" harfinin kaçıncı karakter(0'dan başladığını hatırlayalım) olduğunu bize verdi.
Ama "Python" dilinden sonra bir "o" harfi olan kelimemiz daha var.Ama python solda sağa doğru
okuma yaptığı için ilk "o" harfinin bulunduğu değeri verdi.
eğer arama yaptığımız harf yok ise -1 değerini bize döndürecektir.
>>> a="Python"
>>> a.find("i")
-1
Python bize aralık olarak arama yapmada imkanı veriyor:
>>> a="Python kolay bir dil"
>>> a.find("n",0,6)
5
Bu örnekte 0 ile 6. karakterler arasını araştırp bize "n" harfinin kaçıncı karakter olduğunu
söylemesini istedik.
Rfind metodu
Bu metod find metodu ile aynı görevi yapar fakat tek farkı karakter dizilerini soldan sağa değilde
sağdan sola doğru okur.
>>> a="python"
>>> a.rfind("p")
0
İndex metodu
find() metodu ile aynı işelve sahiptir.Tek değişik yönleri;fin() metodu bir karakteri bulamadığında
-1 değerini döndürür,index() metodu ise hata mesajı.
rindex metodu
Bu da index metodunun soldan sağa yaptığı okuma işini sağdan sola yapmaktadır.
join metodu
Bu metod karakter dizimizdeki her karakter arasına yeni bir karakter ekleme imkanı verir.
>>> a="python"
>>> "-".join(a)
'p-y-t-h-o-n'
>>> a=["php","jquery","ajax","android","python","c#","c++","java"]
>>> ":".join(a)
'php:jquery:ajax:android:python:c#:c++:java'
translate metodu
Bu metodu anlatmak hem karışık hemde zor olduğu için bu metodu istihza.com'dan alıntı yapacağım.
str.maketrans ve translate Metotları
Bu iki metot birbiriyle bağlantılı olduğu için, bunları bir arada göreceğiz.
Diyelim ki elimizde bir karakter dizisi var ve biz bu karakter dizisini şifrelemek istiyoruz. Bunun için şöyle bir kod yazdığımızı varsayalım:
sözlük = {"a":"0",
"b":"1",
"c":"2",
"ç":"3",
"d":"4",
"e":"5",
"f":"6",
"g":"7",
"ğ":"8",
"h":"9",
"ı":"a",
"i":"b",
"j":"c",
"k":"ç",
"l":"d",
"m":"e",
"n":"f",
"o":"g",
"ö":"h",
"p":"ı",
"r":"i",
"s":"j",
"ş":"k",
"t":"l",
"u":"m",
"ü":"n",
"v":"o",
"y":"ö",
"z":"p",
" ":" "}
kardiz = "python programlama dili"
şifreli = ""
for i in kardiz:
şifreli = şifreli + sözlük[i]
print(şifreli)
Bu kodu çalıştırdığımız zaman şöyle bir çıktı alırız:
ıöl9gf ıig7i0ed0e0 4bdb
Aslında bu çıktıda “python programlama dili” yazıyor. Biz yukarıdaki kodlar yardımıyla karakter dizimizi şifreledik. Python, yazdığımız sözlüğü temel alarak “p” harfi gördüğü yere “ı” harfini; “y” harfi gördüğü yere “ö” harfini, “t” gördüğü yere “l” harfini... yerleştiriyor. Böylece karakter dizimizin çıplak gözle anlaşılmasını engelleyecek bir çıktı veriyor bize. İsterseniz yukarıdaki kodları bir fonksiyon olarak tanımlayıp çok daha verimli bir hale getirebiliriz:
sözlük = {"a":"0",
"b":"1",
"c":"2",
"ç":"3",
"d":"4",
"e":"5",
"f":"6",
"g":"7",
"ğ":"8",
"h":"9",
"ı":"a",
"i":"b",
"j":"c",
"k":"ç",
"l":"d",
"m":"e",
"n":"f",
"o":"g",
"ö":"ğ",
"p":"h",
"r":"ı",
"s":"i",
"ş":"j",
"t":"k",
"u":"l",
"ü":"m",
"v":"n",
"y":"o",
"z":"ö",
" ":" "}
def sifrele(kardiz):
şifreli = ""
for i in kardiz:
şifreli = şifreli + sözlük[i]
return şifreli
print(sifrele("python programlama dili"))
Fonksiyonumuzu bir kez bu şekilde tanımladıktan sonra sadece sifrele() fonksiyonunu kullanarak karakter dizilerimizi şifreleyebiliriz:
>>> print(sifrele("merhaba dünya"))
e5i9010 4nfö0
Burada bazı sorunlar olduğu açık. Mesela sözlük içinde tanımlanmamış karakter kullanıldığında programımız hata verecektir. Ayrıca açıkçası bu kodlar biraz “kalabalık” görünüyor göze...
İsterseniz yukarıdaki işlemi daha sade ve performanslı bir biçimde yapmanın bir yolu vardır Python’da...
Bunun için str.maketrans() ve translate() metotlarından yararlanacağız. Şu kodlara bir bakalım:
kaynak_dizi = "abcçdefgğhıijklmnoöprsştuüvyz"
hedef_dizi = "0123456789abcçdefgğhıijklmnoö"
çeviri_nesnesi = str.maketrans(kaynak_dizi, hedef_dizi)
kardiz = "python programlama dili"
sonuç = kardiz.translate(çeviri_nesnesi)
print(sonuç)
Burada yaptığımız şey çok basit. Öncelikle “kaynak_dizi” adında bir karakter dizisi oluşturduk. Amacımız bir karakter dizisi içindeki karakterleri başka karakterlere dönüştürmek. İşte bu “kaynak_dizi” adlı karakter dizisi özgün kaynak dizimizin karakterlerini temsil ediyor. Alt satırdaki “hedef_dizi” adlı karakter dizisi ise, kaynak dizi içindeki karakterlerin dönüştürüleceği karakterleri gösteriyor. Bu iki karakter dizisini, bir üstteki kodlarda sözlük halinde yazmıştık. Buradaki “kaynak_dizi” adlı karakter dizisi bir önceki kodlardaki sözlüğün “anahtar”larının (keys), “hedef_dizi” adlı karakter dizisi ise sözlüğün “değer”lerinin (values) yerini tutuyor.
Karakter dizilerimizi tanımladıktan sonra str.maketrans() metodunu kullanarak bir “çeviri nesnesi” oluşturacağız. Oluşturacağımız bu çeviri nesnesi, biraz önce tanımladığımız “kaynak_dizi” ve “hedef_dizi” adlı karakter dizilerinin öğelerini birbiriyle eşleştirme vazifesi görecek. Zaten “str.maketrans(kaynak_dizi, hedef_dizi)” satırı bu vazifeyi gözler önüne seriyor... Bu arada maketrans() metodunu, öteki metotlardan farklı olarak str.maketrans() şeklinde kullandığımıza özellikle dikkat edin.
Hemen ardından çeviri işlemine tabi tutacağımız karakter dizimizi yazdık. Bu karakter dizimiz “python programlama dili”.
Daha sonra da “sonuç” adlı bir değişken içinde translate() metodundan faydalanarak yukarıda oluşturduğumuz “çeviri_nesnesi”ni bu metoda argüman olarak veriyoruz. Bu metot, “kardiz” adlı karakter dizisini alıp, yukarıda “çeviri_nesnesi” içinde belirlediğimiz formüle göre çeviri işlemine tabi tutuyor ve ortaya şifrelenmiş bir karakter dizisi çıkarıyor...
Yer:
Bartın, Türkiye
2 Ocak 2012 Pazartesi
Mobil Programlama Görsel Ders-Bilge Adam Ders Notları 3-4 Ocak
Arkadaşlar Öncelikle video sessizdir.Malum hoca anlatıyo biz kodluoz..
Bilge Adam mobil programlama dersi sırasında kendi bilgisayarımdan çekmiş olduğum videolardır.. Hoca işlerken yorum satırlarıyla anlattım.. Mobil programlamayla ilgilenenler olursa indirsin
İzlerken anlamadığınız yer olursa pm atın açıklayım nerede takıldığınızı.. Ayrıca projeler'de dosyanın içinde ordanda inceleyebilirsiniz... Nacizene yaptık bişiler faydalı olucaktır illaki..
İçindekiler....
1) Giriş
2) Windows Phone'da
-Kamera açma
-Resim, Video Çekme
-MMS Video Çekme
-Kişi Ekleme
-SMS Gönderme
-Kişi Bilgisi Gösterme
3) Veritabanı İşlemleri
-Veritabanı Oluşturma
-Ado.Net Bağlantı
-Farklı ip ile Bağlantı (Uzak Bağlantı)
Not: Windows 5 ve 6.5 SDK kurulmalı..
http://hotfile.com/dl/94212375/dedb977/Mobil_Programlama.rar.html
İçindekiler....
1) Giriş
2) Windows Phone'da
-Kamera açma
-Resim, Video Çekme
-MMS Video Çekme
-Kişi Ekleme
-SMS Gönderme
-Kişi Bilgisi Gösterme
3) Veritabanı İşlemleri
-Veritabanı Oluşturma
-Ado.Net Bağlantı
-Farklı ip ile Bağlantı (Uzak Bağlantı)
Not: Windows 5 ve 6.5 SDK kurulmalı..
http://hotfile.com/dl/94212375/dedb977/Mobil_Programlama.rar.html
14 Aralık 2011 Çarşamba
Karakter Dizi Metodları -2
Ljust
Bu metod karakter dizisinin sağında boşluk bırakarak,karakter dizisinin sola yaslanmasını sağlar.
>>> "python".ljust(10)
'python '
ikinci bir örnek ise
>>> "python".ljust(10,"*")
'python****'
şeklinde ek ifadeler ekleyebiliriz
Rjust
Bu metod karakter dizisinin solunda boşluk bırakarak,karakter dizisinin sağa yaslanmasını sağlar.
>>> "python".rjust(10,"*")
'****python'
Zfill
Bu metod da önceki işlediğimiz 2 metoda benzer bir görevi vardır.Zfill() metodu ile sayıların
soluna istedeğimiz kadar 0 yerleştirebiliriz
>>> x=7
>>> x="7"
>>> x.zfill(2)
'07'
şeklinde 0 sayısını eklememizi sağlar.
Replace
Bu metod python metodları içinde en çok işimize yarayacak metod olacak.replace() metodu ile bir
karakter dizisi içindeki karakterleri,başka bir karakter ile değiştirebiliriz.
>>> cumle="python dilini öğreniyorum"
>>> cumle.replace("i","ı")
'python dılını öğrenıyorum'
Startswith
Bu metod ile karakter dizilerimizin belli bir harfle veya karakterle başlayıp başlamadığını
öğrenebiliriz.
>>> x="elma"
>>> x.startswith("e")
True
>>> a="python"
>>> a.startswith("a")
False
Endswith
Bu metod da bir önceki metodun tam tersi görevi yapmaktadır.Yani bir karakter dizisinin hangi
karakter yada harfle bittiğini bulmamızı sağlar.
>>> x="python"
>>> x.endswith("p")
False
>>> x.endswith("n")
True
Count
Bu metod ile karakter dizimizin içerisinde bir karakterden kaç tane olduğunu bulmamızı sağlar.
>>> x="film,dizi,sinema"
>>> x.count("i")
4
Isalpha
Bu metod ile karakter dizimizin alfabetik olup olmadığını kontrol edebiliriz.
>>> x="python"
>>> x.isalpha()
True
>>> x="number1"
>>> x.isalpha()
False
İsdigit
Bu metod da bir önceki metodun ters işlemini yani girilen karakter dizsinin sayısal olup olmadığını
öğrenmemizi sağlar.
>>> x="123asd456"
>>> x.isdigit()
False
>>> x="456123789"
>>> x.isdigit()
True
Isalnum
Bu metod bir karakter dizisinin alfanümerik olup olmadığı hakkında bize bilgi verir.
>>> x="123asd456"
>>> x.isalnum()
True
>>> x="123/"
>>> x.isalnum()
False
Islower ve Isupper
Islower karakter dizisinin tamamının küçük harflerden oluşup oluşmadığını denetlememizi sağlar.
Isupper ise karakter dizisinin tamamının büyük harferden oluşup oluşmadığını denetlememizi sağlar.
>>> sehir="Bartın"
>>> sehir.islower()
False
>>> sehir="bartın"
>>> sehir.islower()
True
>>> sehir="Bartın"
>>> sehir.isupper()
False
>>> sehir="BARTIN"
>>> sehir.isupper()
True
Istitle
Bu metod ile karakter dizimizin ilk harfinin büyük olup olmadığını öğrenebiliriz.
>>> bolum="yönetim bilişim sistemleri"
>>> bolum.istitle()
False
>>> bolum="Yönetim bilişim sistemleri"
>>> bolum.istitle()
False
>>> bolum="Yönetim Bilişim Sistemleri"
>>> bolum.istitle()
True
Isspace
Bu metod ile karakter dizimizin boşluktan oluşup oluşmadığını denetleyebiliriz.
>>> x=" "
>>> x.isspace()
True
>>> x="Python Programlama Dili"
>>> x.isspace()
False
Bu metod karakter dizisinin sağında boşluk bırakarak,karakter dizisinin sola yaslanmasını sağlar.
>>> "python".ljust(10)
'python '
ikinci bir örnek ise
>>> "python".ljust(10,"*")
'python****'
şeklinde ek ifadeler ekleyebiliriz
Rjust
Bu metod karakter dizisinin solunda boşluk bırakarak,karakter dizisinin sağa yaslanmasını sağlar.
>>> "python".rjust(10,"*")
'****python'
Zfill
Bu metod da önceki işlediğimiz 2 metoda benzer bir görevi vardır.Zfill() metodu ile sayıların
soluna istedeğimiz kadar 0 yerleştirebiliriz
>>> x=7
>>> x="7"
>>> x.zfill(2)
'07'
şeklinde 0 sayısını eklememizi sağlar.
Replace
Bu metod python metodları içinde en çok işimize yarayacak metod olacak.replace() metodu ile bir
karakter dizisi içindeki karakterleri,başka bir karakter ile değiştirebiliriz.
>>> cumle="python dilini öğreniyorum"
>>> cumle.replace("i","ı")
'python dılını öğrenıyorum'
Startswith
Bu metod ile karakter dizilerimizin belli bir harfle veya karakterle başlayıp başlamadığını
öğrenebiliriz.
>>> x="elma"
>>> x.startswith("e")
True
>>> a="python"
>>> a.startswith("a")
False
Endswith
Bu metod da bir önceki metodun tam tersi görevi yapmaktadır.Yani bir karakter dizisinin hangi
karakter yada harfle bittiğini bulmamızı sağlar.
>>> x="python"
>>> x.endswith("p")
False
>>> x.endswith("n")
True
Count
Bu metod ile karakter dizimizin içerisinde bir karakterden kaç tane olduğunu bulmamızı sağlar.
>>> x="film,dizi,sinema"
>>> x.count("i")
4
Isalpha
Bu metod ile karakter dizimizin alfabetik olup olmadığını kontrol edebiliriz.
>>> x="python"
>>> x.isalpha()
True
>>> x="number1"
>>> x.isalpha()
False
İsdigit
Bu metod da bir önceki metodun ters işlemini yani girilen karakter dizsinin sayısal olup olmadığını
öğrenmemizi sağlar.
>>> x="123asd456"
>>> x.isdigit()
False
>>> x="456123789"
>>> x.isdigit()
True
Isalnum
Bu metod bir karakter dizisinin alfanümerik olup olmadığı hakkında bize bilgi verir.
>>> x="123asd456"
>>> x.isalnum()
True
>>> x="123/"
>>> x.isalnum()
False
Islower ve Isupper
Islower karakter dizisinin tamamının küçük harflerden oluşup oluşmadığını denetlememizi sağlar.
Isupper ise karakter dizisinin tamamının büyük harferden oluşup oluşmadığını denetlememizi sağlar.
>>> sehir="Bartın"
>>> sehir.islower()
False
>>> sehir="bartın"
>>> sehir.islower()
True
>>> sehir="Bartın"
>>> sehir.isupper()
False
>>> sehir="BARTIN"
>>> sehir.isupper()
True
Istitle
Bu metod ile karakter dizimizin ilk harfinin büyük olup olmadığını öğrenebiliriz.
>>> bolum="yönetim bilişim sistemleri"
>>> bolum.istitle()
False
>>> bolum="Yönetim bilişim sistemleri"
>>> bolum.istitle()
False
>>> bolum="Yönetim Bilişim Sistemleri"
>>> bolum.istitle()
True
Isspace
Bu metod ile karakter dizimizin boşluktan oluşup oluşmadığını denetleyebiliriz.
>>> x=" "
>>> x.isspace()
True
>>> x="Python Programlama Dili"
>>> x.isspace()
False
10 Aralık 2011 Cumartesi
Karakter Dizi Metodları -1
Listeler konusunda bu konuya benzer bir konu işlemiştik.Ama artık pythonda ilerlediğimize göre
daha complex terimler göremenin vakti geldi.
Öcelikle göreceğimiz metodları ekrana yazdırmakla başlayalım
>>> dir("")
['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__',
'__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__',
'__init__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__',
'__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__',
'__sizeof__', '__str__', '__subclasshook__', '_formatter_field_name_split', '_formatter_parser',
'capitalize', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format',
'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric',
'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip',
'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit',
'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate',
'upper', 'zfill']
tabii bunların hepsini işlemeyceğiz.İşelemeyceklerimizi gruplandıracak olursak '__xxx__' şeklinde
önünde ve sonunda alt tire olanlardır.Çünkü bunlar özel metodlara girmektedir.Bunların farklı
kapsam alanları var.Bunların dışındaki metodları göreceğiz.
Capitalize
Bu metod ile cümlelerimizin,kelimelerimizin yada daha geniş kapsamıyla karakter dizilerinin ilk
harfini büyütmemize yardımcı oluyor.
>>> "python".capitalize()
'Python'
Upper
Bu metod ile küçük harflerden oluşan karakter dizisinin bütün harflerini büyültmemizi sağlıyor
>>> "python".upper()
'PYTHON'
Eğer bu metodda Türkçe karakter kullanırken hata alıyorsanız ayrıca birkaç işlem yapmamız gerekiyor.Örneğin
>>>"şennur".upper()
'\xc\x9fEKER'
gibi bir durum ile karşılaşıyorsanız
>>>import locale
>>>locale.setlocale(locale.LC_ALL,"")
şeklindek locale modülünü eklememiz gerekir.Ve sonra
>>>print u"şennur".upper()
'ŞENNUR'
burada kullandığımız u harfi unicode adlı bir veri tipini ifade ediyor.Şimdilik bunu dönüştürücü
şeklinde bilsek yeterli ileride göreceğiz zaten.
Lower
Bu metodda upper() metodunun tam tersini yani büyük harfi küçük harfe dönüştürüyor.
>>> "PYTHON".lower()
'python'
tıpkı upper metodunda da olduğu gibi Türkçe karakter sorunu için yine aynı işlemi yapmamız gerekecek.
Swapcase
Bu metod ise harfin o andaki durmunun tam ters haline dönüştürür.
>>> "PyThOn".swapcase()
'pYtHoN'
Title
capitalize() metodunun bütün kelimelerin baş harflerini büyük yapar.
>>> "python programlama öğreniyorum".title()
'Python Programlama Öğreniyorum'
Center
Karakter dizisinin sağında ve solunda programcının belirlediği sayı kadar boşluk bırakır.
>>> "python".center(12)
' python '
center() metodunun ikinci bir kullanımıda
>>> "python".center(12,"*")
'***python***'
şeklindede kullanabilmemizdir.
daha complex terimler göremenin vakti geldi.
Öcelikle göreceğimiz metodları ekrana yazdırmakla başlayalım
>>> dir("")
['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__',
'__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__',
'__init__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__',
'__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__',
'__sizeof__', '__str__', '__subclasshook__', '_formatter_field_name_split', '_formatter_parser',
'capitalize', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format',
'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric',
'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip',
'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit',
'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate',
'upper', 'zfill']
tabii bunların hepsini işlemeyceğiz.İşelemeyceklerimizi gruplandıracak olursak '__xxx__' şeklinde
önünde ve sonunda alt tire olanlardır.Çünkü bunlar özel metodlara girmektedir.Bunların farklı
kapsam alanları var.Bunların dışındaki metodları göreceğiz.
Capitalize
Bu metod ile cümlelerimizin,kelimelerimizin yada daha geniş kapsamıyla karakter dizilerinin ilk
harfini büyütmemize yardımcı oluyor.
>>> "python".capitalize()
'Python'
Upper
Bu metod ile küçük harflerden oluşan karakter dizisinin bütün harflerini büyültmemizi sağlıyor
>>> "python".upper()
'PYTHON'
Eğer bu metodda Türkçe karakter kullanırken hata alıyorsanız ayrıca birkaç işlem yapmamız gerekiyor.Örneğin
>>>"şennur".upper()
'\xc\x9fEKER'
gibi bir durum ile karşılaşıyorsanız
>>>import locale
>>>locale.setlocale(locale.LC_ALL,"")
şeklindek locale modülünü eklememiz gerekir.Ve sonra
>>>print u"şennur".upper()
'ŞENNUR'
burada kullandığımız u harfi unicode adlı bir veri tipini ifade ediyor.Şimdilik bunu dönüştürücü
şeklinde bilsek yeterli ileride göreceğiz zaten.
Lower
Bu metodda upper() metodunun tam tersini yani büyük harfi küçük harfe dönüştürüyor.
>>> "PYTHON".lower()
'python'
tıpkı upper metodunda da olduğu gibi Türkçe karakter sorunu için yine aynı işlemi yapmamız gerekecek.
Swapcase
Bu metod ise harfin o andaki durmunun tam ters haline dönüştürür.
>>> "PyThOn".swapcase()
'pYtHoN'
Title
capitalize() metodunun bütün kelimelerin baş harflerini büyük yapar.
>>> "python programlama öğreniyorum".title()
'Python Programlama Öğreniyorum'
Center
Karakter dizisinin sağında ve solunda programcının belirlediği sayı kadar boşluk bırakır.
>>> "python".center(12)
' python '
center() metodunun ikinci bir kullanımıda
>>> "python".center(12,"*")
'***python***'
şeklindede kullanabilmemizdir.
Kaydol:
Kayıtlar (Atom)


