idea worker - fikir işçisi


VERİYİ ANLAMA YOLCULUĞU 2: PYTHON RE MODÜLÜ İLE TELEFON NUMARALARI KONTROLÜ ve METİNDEN SAYILARI YAKALAMAK

25.01.2020 23:03

İç denetçilerin ve hile inceleme uzmanlarının veriyle dans etmesini sağlama adına, bu yazıda Python re modülü ile bir örnek yapacağız. Öncelikle şunu belirteyim: Re modülü bir derya denizdir ve anlaşılması, akılda tutulması ve kullanılması zordur. Ama çok önemlidir; çünkü elimize ulaşan verinin önemli bir bölümü metin verisi olacaktır. Re modülünü iyi bir şekilde öğrenmek için emekleyenlerdenim, ama umudum devam ediyor:)

 

 

Örneğimizde, incelediğimiz verideki telefon numaralarının 555 555 5555 şeklinde olup olmadığını kontrol edeceğiz. İhtiyaca göre bu format değiştirilebilir. Yani daha farklı kontroller gerçekleştirmemiz mümkündür. Kontrolün neticesinde, bize True ya da False değerleri dönecek. Gerekli kodları aşağıya ekliyorum.

 

telefonlar = {"Mustafa Büyükdereli":"505 100 22 11"

              "Ayhan Bilge":"532 4215798"

              "Can Gözler":"0532 421 96 87"

             "Cemil Ayhan":"543 421 8795"}

 

import re

for telefon in telefonlar.values():

  kontrol = re.compile('\d{3} \d{3} \d{4}')

  print(bool(kontrol.match(telefon)))

 

İlk üç telefon numarası için False değeri elde edilirken, Cemil Ayhan'ın telefon numarası için True değeri elde ediyoruz. Örnek veride sadece 4 kayıt var, ama binlerce kayıtla uğraştığımızda, bu tür hamleler bize oldukça faydalı olabilir.

 

İkinci örneğimize geçelim. Bu örnekte bir metinde geçen bütün sayıları (11, 5, 8796 gibi...) elde etmek istiyoruz. Örnek metin çok uzun değil, ama binlerce sayfa dolusu metini tararken, Re modülü bize çok faydalı olacak. Gerekli kodları aşağıya ekliyorum.

 


metin= "Bu savunma yazısında hakkımdaki iddialara yanıt vereceğim. 

İddia edilen 1000 lirayı asla ben çalmadım. 

Ki bir kuruş hırsızlık yapmadım. 

Bireysel kasamda 2019 yılı boyunca günlük ortalama 15000 lira olmuştur. 

Hiç kasa açığı vermedim. 

Hakkımda olumlu düşüncelere sahip olan YK Başkanımız Ali Uyanık'a beni sorabilirsiniz. 

Kendisinin özel telefon numarası 05051112233."

 

import re

 

re.findall('\d+', metin)

 

Sonuç aşağıda:

['1000', '2019', '15000', '05051112233']

 

—————

Geri