Python Regex kullanarak dosya işlemleri yapmak için doğru yerdesiniz! Bu yazıda, Python Regex'in ne olduğunu, nasıl kullanılabileceğini ve dosya işlemlerinde nasıl etkili bir şekilde kullanılabileceğini öğreneceksiniz -*- Dosya İşlemleri -*-

Python programlama dili, dosya işlemleri sırasında regex kullanımına olanak tanır. Regex, metin işleme süreçlerinde kullanılan güçlü bir araçtır ve matematiksel kurallara dayalıdır. Bu makalede, dosya işlemleri için Python regex kullanımının nasıl yapıldığını ele alacağız.
Regex Nedir?
Regex, adı kısaltılan regular expressions ifadesinin kısaltmasıdır. Regular expressions, metin işleme süreçlerinde sıklıkla kullanılan bir araçtır ve matematiksel kurallara dayanır. Regex, metin içinde belirli bir kalıbı aramak, eşleşen öğeleri değiştirmek veya metin ile ilgili diğer işlemleri gerçekleştirmek için kullanılır. Regex, sadece Python'da değil, birçok programlama dilinde bulunur ve metin işleme için çok faydalıdır.
Python'da Regex Kullanımı
re modülü, regex kullanımını sağlar. Bu modülün önemli fonksiyonları arasında, belirli bir kalıbı aramak, eşleşen öğeleri değiştirmek, metin içindeki tüm eşleşmeleri listelemek ve metne yeni öğeler eklemek yer alır.
re modülü, "compile" fonksiyonuyla bir örüntüyü derleme işlemine tabi tutarak daha hızlı bir arama yapar. Daha sonra oluşturulan derleme nesnesi, "search" ve "match" fonksiyonlarıyla metinde arama yapmak için kullanılabilir.
Ayrıca, "findall" fonksiyonu, bir metindeki belirli bir desenin tüm eşleşmelerini liste olarak döndürür. "split" fonksiyonu, metni belirli bir desene göre böler ve böylece metnin düzenlenmesine yardımcı olur. "sub" fonksiyonu ise, belirli bir desene eşleşen tüm metni yeni bir öğe ile değiştirebilir.
Python'da regex kullanımı oldukça yaygındır ve dosya işlemleri için de sıklıkla tercih edilir. Dosya içindeki metinleri aramak, örüntüleri değiştirmek veya sadece belirli bir bölümünü almak için regex kullanılabilir. Özellikle büyük dosyaların içinde arama yaparken, regex kullanımı oldukça verimli olabilir.
remodülü, Python'daki regex kullanımını sağlayan bir pakettir. Bu modülü kullanarak metinlerde belirli örüntüleri bulabilir, değiştirebilir veya silerek metinleri manipüle edebiliriz. Bunun yanı sıra, re modülü ile gruplama ve yakalama yapabiliriz. Parantezleri kullanarak desen içindeki öğeleri yakalayabilir, böylece aradığımız veriyi daha kolay bir şekilde elde edebiliriz. Ayrıca, re modülü ile bir metin içindeki tüm eşleşmeleri değiştirerek metinleri manipüle etmeniz de mümkündür. Bu yöntem dosya işlemleri için oldukça kullanışlıdır. Dosya içinde aradığımız metni kolayca bulabilir ve değiştirebiliriz.
modülü, regex kullanımını sağlar. Metin içinde belirli bir kalıbı aramak, eşleşen öğeleri değiştirmek ve metin ile ilgili diğer işlemleri gerçekleştirmek için kullanılabilir.Python'da re modülü, regex kullanımını sağlamaktadır. Bu modül, bir metin içindeki belirli bir kalıbı aramak, eşleşen öğeleri değiştirmek ve metin ile ilgili diğer işlemleri gerçekleştirmek için kullanılabilir. re modülü, düzenli ifadeler oluşturmak ve kullanmak için hızlı ve kullanışlı bir yöntem sağlar.
Bir re-deseni oluşturmak için, öncelikle desenin içereceği karakterleri belirlemelisiniz. Bu karakterler, metinde aradığınız öğelerle eşleşen karakterleri belirleyecektir. Örneğin, bir e-posta adresi aramak için "@" karakterini kullanabilirsiniz.
re modülü ayrıca, regex kalıplarını ve metinleri aramak ve değiştirmek için bir dizi metot sağlar. Bunlar arasında re.search()
, re.match()
, re.findall()
fonksiyonları yer alır. Ayrıca, bir metnin içindeki regex desenlerini değiştirmek için re.sub()
fonksiyonunu kullanabilirsiniz.
Ayrıca, re modülü, regex kalıplarını gruplandırmanıza ve yakalamanıza izin verir. Bu, bir çoklu eşleşmeyle karşılaştığınızda ögeleri daha kolay yönetmenizi sağlar. Örneğin, bir telefon numarası ararken, sayıları gruplandırarak daha okunaklı bir biçimde görebilirsiniz.
Regex Kalıpları ve Örnekleri
regex kalıpları, metinlerdeki belirli örüntüleri aramak, eşleştirmek ve manipüle etmek için kullanılabilir. Bu kalıplar, tek bir karakteri veya bir dizi karakteri ifade edebilir. Örneğin, [a-z] kalıbı, harflerden (küçük harf) herhangi birinin eşleştiği herhangi bir karakteri ifade ederken, \d kalıbı, sayısal karakterleri ifade eder.
Regex kalıpları, metinlerdeki farklı veri türlerini de tanımlayabilir. Örneğin, bir e-posta adresi belirli bir formatta yazılır ve ^[\w.%+-]+@[\w.-]+\.[a-zA-Z]{2,6}$ kalıbı, bir e-posta adresi için doğru bir formatta eşleşme sağlar.
Ayrıca, parantezler kullanarak gruplama ve yakalama da yapılabilir. Gruplama yapmak, eşleşen öğeleri belirli bir örüntüye göre gruplandırırken, yakalama yaparak bu öğeleri başka bir amaç için kullanabilirsiniz. Örneğin, (\d{3})-(\d{2})-(\d{4}) kalıbı, bir telefon numarasındaki sayıları gruplandırır.
Regex kalıplarının manipülasyonu, metinlerin düzenlenmesi için de kullanılabilir. Bu kalıplar, metindeki eşleşen tüm öğeleri değiştirerek metni manipüle etmenize olanak tanır. re.sub(pattern, replacement, string) fonksiyonu, bir metnin içinde belirli bir desenin tüm eşleşmelerini değiştirir.
Python'da regex kullanımı oldukça yaygındır ve dosya işlemleri sırasında da kullanılabilir. Bu sayede, dosya içindeki metinleri aramak, örüntüleri değiştirmek veya sadece belirli bir bölümünü almak daha kolay hale gelir.
[a-z]Bu kalıp, küçük harflerden herhangi birinin eşleştiği herhangi bir karakteri ifade eder. Örneğin, bir metindeki tüm küçük harfleri bulmak için [a-z] kullanılabilir. Bu, büyük harfleri ve rakamları hariç tutar. Aynı zamanda, [A-Z] sadece büyük harfleri, [0-9] ise sadece rakamları ifade eder. Bu kalıpların haricinde, [a-zA-Z0-9] gibi kombinasyonlar da kullanılabilir.
kalıbı, harflerden (küçük harf) herhangi birinin eşleştiği herhangi bir karakteri ifade eder.[a-z] kalıbı, küçük harfler arasındaki herhangi bir karakteri eşleştirir. Örneğin, "apple" kelimesindeki her harf, bu kalıpla eşleşebilir. Ayrıca, [abc] kullanarak belirli harfleri de eşleştirebilirsiniz. Bu durumda sadece "a", "b" ya da "c" harfleri eşleşecektir. Bunun dışındaki harfler eşleşmez. Yine, [a-z] kullanarak da sadece küçük harfleri eşleştirmek mümkündür.
Benzer şekilde, [A-Z] ile büyük harfleri, [0-9] ile sayıları, ve [^a] ile "a" harfi dışındaki herhangi bir karakteri eşleştirebilirsiniz. Bu kalıpların yanı sıra, belirli bir kelimenin belli bir kısmını veya eşleşen öğeleri gruplamak için de parantezler kullanabilirsiniz. Bu şekilde, örneğin "apple" kelimesindeki "app" bölümünü eşleştirmek mümkündür: (app)
- [a-z]: Küçük harfleri eşleştirir
- [abc]: Belirli harfleri eşleştirir
- [A-Z]: Büyük harfleri eşleştirir
- [0-9]: Sayıları eşleştirir
- [^a]: "a" harfi dışındaki herhangi bir karakteri eşleştirir
- ( ): Öğeleri gruplandırmak için kullanılır
Bu regex kalıbı, bir e-posta adresi için doğru bir formatta eşleşme sağlar. Adresin önce kullanıcı adını, ardından "@" sembolünü, sonra mail sunucusunu ve son olarak "." ile birlikte uzantısını içeren bir dizge olduğunu kontrol eder. Ayrıca, e-posta adreslerinde sadece alfanumerik karakterler, noktalama işaretleri ve "+" , "-", "%" işaretleri kullanılabilir. Mail sunucularında ise alfanumerik karakterler, noktalar ve "-" işareti kullanılabileceği gibi, uzantılar yalnızca en az 2 ve en fazla 6 harf içerebilir.
kalıbı, bir e-posta adresi için doğru bir formatta eşleşme sağlar.Regex kalıpları, metin işleme sırasında oldukça işe yarar. En yaygın kullanım, bir metindeki belirli bir örüntüyü veya kalıbı bulmaktır. Bu kalıplar, matematiksel kurallara dayanır ve metin içinde geçen herhangi bir öğeyle eşleşebilirler. Bu nedenle, regex ifadelerinin doğru bir şekilde yazılması önemlidir. Örneğin, bir e-posta adresi için regex kalıbı şu şekildedir: ^[\w.%+-]+@[\w.-]+\.[a-zA-Z]{2,6}$
.
Bu kalıp, 'username@domain.com' formatında bir e-posta adresi için doğru bir eşleşme sağlar. \w, bir kelime karakteriyle eşleşirken, . özel bir karakterdir ve yalnızca kendisiyle eşleşir. + işareti, önceki öğelerin en az bir defa eşleştiğini gösterir. Sonra, @ işaretiyle domain adı arasındaki öğeleri kontrol ederiz. '.' karakteri yalnızca kendisiyle eşleşir, - karakteri de yine yalnızca kendisiyle eşleşir. Bu kalıp, e-posta adreslerinin doğru bir şekilde yazılıp yazılmadığını kontrol etmek için kullanılabilir.
Gruplama ve Yakalama
Gruplama ve Yakalama:Regex, belirli bir desende öğeleri gruplandırıp yakalamanızı sağlayan parantez kullanımına izin verir. Örneğin, (\d{3})-(\d{2})-(\d{4}) kalıbı, bir telefon numarasındaki sayıları gruplandırır. Bu gruplama özelliği aynı zamanda aranan öğeleri belirleyerek daha spesifik aramalar ve operasyonlar gerçekleştirmeyi de sağlar.
Gruplama için özel bir işaret kullanmak gerektiğinden, aranacak öğeleri parantez içinde belirtmek önemlidir. Gruplama sonucunda eşleşen öğeler kolaylıkla yakalanabilirler ve istenilen manipülasyonlar gerçekleştirilebilir.
(\d{3})-(\d{2})-(\d{4})Parantezleri kullanarak, bir desen içindeki öğeleri gruplandırıp yakalayabilirsiniz. Örneğin, (\d{3})-(\d{2})-(\d{4}) kalıbı, bir telefon numarasındaki üç sayı grubunun arasına kurulmuş tirelerden oluşan bir telefon numarasını eşleştirir. Bu, metni işlemek için oldukça faydalıdır. Ayrıca, regex kalıplarını kullanarak metnin içindeki eşleşen tüm öğeleri değiştirerek metni manipüle etmek de mümkündür. re modülü, bir metnin içinde belirli bir desenin tüm eşleşmelerini değiştirmek için re.sub(pattern, replacement, string) fonksiyonunu sağlar. Bu özellik, bir metindeki belirli bir deseni bulup, değiştirmek için kullanışlıdır.
kalıbı, bir telefon numarasındaki sayıları gruplandırır.Parantezleri kullanarak, bir desen içindeki öğeleri gruplandırıp yakalayabilirsiniz. Örneğin, (\d{3})-(\d{2})-(\d{4})
kalıbı, bir telefon numarasındaki sayıları gruplandırır. Bu örnek kalıpta, üç sayıdan oluşan bir grup, iki sayıdan oluşan bir grup ve dört sayıdan oluşan bir grup vardır. Bu grupları yakalamak için ()
parantezlerini kullanabilirsiniz.
Bu grupların yakalanması, daha sonra yapılacak işlemler için oldukça önemlidir. Örneğin, numaradaki her bir grubu ayrı ayrı kullanmak veya numara formatını değiştirmek için bu grupları kullanabilirsiniz.
Ayrıca, kullanılan her kalıp için farklı sayıda grup kullanılabilir. Bir deseni benzersiz şekilde tanımlamak ve gruplama işlemlerini yapmak, regex kullanımının önemli bir parçasıdır.
Değiştirme
Python'da, re modülü metin içindeki eşleşen tüm öğeleri değiştirerek metni manipüle etmenize olanak tanır. Bu işlem, metin işlemleri yaparken oldukça yararlı olabilir. Örneğin, re.sub(pattern, replacement, string) fonksiyonu, bir metnin içinde belirli bir desenin tüm eşleşmelerini değiştirir.
Bizim örneğimizde, bir metindeki belli bir karakter dizisini başka bir ile değiştirmek istediğimizi varsayalım. re.sub () fonksiyonu, metnin içindeki tüm eşleşmeleri değiştirir. Bu nedenle, bir pattern ve replacement parametresi vermeniz gerekir. Bu örnek için bir replacement değeri atayabiliriz:
METİN | YENİ METİN |
---|---|
Selam, ben bir makineyim. | Merhaba, ben bir makineyim. |
Yukarıdaki tabloda, "Selam, ben bir makineyim." metnindeki "Selam" kelimesi "Merhaba" ile değiştirildi. Bunu yapmak için, replacement parametresi olarak "Merhaba" kelimesi verildi.
re.sub(pattern, replacement, string)re modülünün en önemli işlevlerinden biri de metin içinde belirli bir desenin tüm eşleşmelerini değiştirmeye olanak tanımasıdır. Bu işlemi gerçekleştirmek için kullanılan fonksiyon, re.sub() fonksiyonudur. Bu fonksiyon üç parametre alır:
- pattern: Değiştirilecek öğelerin belirlenmesinde kullanılan regex deseni
- replacement: Değiştirilecek öğelerin yerine konulacak ifade
- string: Değiştirilecek metin
Bir örnekle açıklamak gerekirse, örneğin bir metindeki belirli bir kelimeyi başka bir kelimeyle değiştirmek istiyorsanız re.sub() fonksiyonunu kullanabilirsiniz. Öncelikle, pattern parametresine değiştirilmesi istenilen kelimeyi ifade eden bir regex deseni girilir. Daha sonra, replacement parametresine kelimenin yerine konulacak yeni kelime girilir ve son olarak da string parametresine değiştirilmesi istenilen metin girilir. Böylece, fonksiyon belirtilen desene uyan öğeleri tespit eder ve yerine replacement parametresinde belirtilen ifadeyi yerleştirir.
fonksiyonu, bir metnin içinde belirli bir desenin tüm eşleşmelerini değiştirir.re modülü, bir metindeki eşleşen tüm öğeleri değiştirerek metni manipüle etmenize olanak tanır. Bunun için kullanabileceğiniz ana fonksiyon re.sub(pattern, replacement, string) şeklindedir. Pattern parametresi, değiştirmek istediğiniz öğeleri belirleyen deseni içerir. Replacement parametresi, desende eşleşen öğelerin yerine geçecek yeni öğeleri belirtir. String parametresi, değiştirilmek istenen metni içerir.
Bu yöntem, özellikle dosya işlemleri sırasında oldukça kullanışlıdır. Örneğin, bir metin belgesinde belirli bir ifadeyi değiştirerek tüm metni güncelleyebilirsiniz. Ayrıca, belirli bir desene eşleşen öğeleri bir başka metnin içindeki öğelerle değiştirebilirsiniz.
Aşağıdaki örnekte, bir metinde bulunan "hello" kelimesini "hi" kelimesiyle değiştirme işlemi gerçekleştirilmiştir.
import retext = "hello world"new_text = re.sub("hello", "hi", text)print(new_text)# Output: "hi world"
Dosya İşlemleri ile Regex Kullanımı
Python ile dosya işlemleri yaparken, sıklıkla metinler üzerinde işlem yapmanız gerekebilir. Bu noktada regex oldukça kullanışlı bir araçtır. Dosya içinde aradığınız bir kalıbı arayabilir, eşleşen öğeleri değiştirebilir veya sadece belirli bir bölümünü alabilirsiniz.
Örneğin, bir CSV dosyasındaki verileri okumayı planladığınızda, sadece belirli sütunları almanız gerekebilir. Bu durumda regex kullanarak ilgili sütunları filtreleyebilirsiniz. Ayrıca, metin dosyalarında hatalı verileri bulmak için de regex kullanabilirsiniz.
Aşağıdaki örnek, bir metin dosyasındaki e-posta adreslerini bulmak için regex kullanımını göstermektedir:
Dosya adı: | ornek_metin.txt |
Dosya içeriği: | Merhaba, bu benim e-posta adresim: email@example.com ve bu da başka bir e-posta adresi: mail@mail.com |
import rewith open('ornek_metin.txt', 'r') as f: metin = f.read() # e-posta adreslerini arayın e_posta = re.findall(r'\b[\w.%+-]+@[\w.-]+\.[a-zA-Z]{2,6}\b', metin) # e-posta adreslerini ekrana yazdırın for adres in e_posta: print(adres)
Yukarıdaki kod, örnek_metin.txt dosyasındaki e-posta adreslerini bulur ve ekrana yazdırır. Bu süreçte, regex kalıbı olarak \b[\w.%+-]+@[\w.-]+\.[a-zA-Z]{2,6}\b kullanılmıştır.
Bu örnek, sadece aranan kalıbı bulmak için kullanılmış olsa da, regex ile dosya içeriğindeki verileri manipüle etmek için daha ileri düzey özellikler kullanabilirsiniz. Dosya işlemleri sırasında Regex kullanımı, işlemlerinizi daha hızlı ve verimli hale getirebilir.