{}
run-icon
main.py
import re def metni_temizle_ve_esitle(metin): """ Harekeleri temizler, tüm gizli boşluk varyasyonlarını standartlaştırır. Hemzeleri uçurur, altlarındaki kürsü harflerini korur. Yalın hemzeyi (ء) siler. Lamelif (لا) geleneksel olarak 2 ayrı harf (Lam ve Elif) olarak işlenir. """ if not metin: return "" # 1. Standart olmayan tüm Unicode boşlukları (No-break space vb.) normal boşluğa çevir temiz = re.sub(r'[\u00A0\u2000-\u200A\u202F\u205F\u3000]', ' ', metin) # 2. Harekeleri, şeddeleri ve Kuran durak işaretlerini kaldır harekeler = re.compile(r'[\u064B-\u065F\u0670\u06D6-\u06ED]') temiz = harekeler.sub('', temiz) # 3. ÖNCE Arapça Hint rakamlarını ve standart rakamları temizle temiz = re.sub(r'[\d\u0660-\u0669]', '', temiz) # 4. Yalın hemzeyi (ء) tamamen kaldır (Altında kürsü olmadığı için yok olur) temiz = re.sub(r'ء', '', temiz) # 5. Noktalama işaretlerini ve diğer yabancı karakterleri kaldır temiz = re.sub(r'[^\w\s\u0621-\u064A]', '', temiz) def arapca_metni_sayiya_cevir(metin, secenek=19, mod="standart"): # 1. Değer Haritaları standart_alfabe = { 'ا': 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, 'آ': 1, 'أ': 1, 'إ': 1, 'ؤ': 27, 'ئ': 28, 'ء': 1, 'ة': 26, 'ى': 28 } ebced_alfabe = { 'ا': 1, 'ب': 2, 'ج': 3, 'د': 4, 'ه': 5, 'و': 6, 'ز': 7, 'ح': 8, 'ط': 9, 'ي': 10, 'ك': 20, 'ل': 30, 'م': 40, 'ن': 50, 'س': 60, 'ع': 70, 'ف': 80, 'ص': 90, 'ق': 100, 'ر': 200, 'ش': 300, 'ت': 400, 'ث': 500, 'خ': 600, 'ذ': 700, 'ض': 800, 'ظ': 900, 'غ': 1000, 'آ': 1, 'أ': 1, 'إ': 1, 'ؤ': 6, 'ئ': 10, 'ء': 1, 'ة': 5, 'ى': 10 } harf_havuzu = set(standart_alfabe.keys()).union({' '}) harekesiz_metin = "".join([k for k in metin if k in harf_havuzu]) harekesiz_metin = re.sub(r'\s+', ' ', harekesiz_metin).strip() kelimeler = harekesiz_metin.split(' ') sayi_gruplari = [] detaylar = [] for kelime in kelimeler: harf_sayilari = [] harf_gosterimi = [] if mod == "lamelif" and 'ل' in kelime and 'ا' in kelime: i = 0 while i < len(kelime): if i < len(kelime) - 1 and kelime[i] == 'ل' and kelime[i+1] == 'ا': harf_sayilari.append("31") harf_gosterimi.append("لا(31)") i += 2 else: harf = kelime[i] if harf in standart_alfabe: sira = standart_alfabe[harf] harf_sayilari.append(str(sira)) harf_gosterimi.append(f"{harf}({sira})") i += 1 else: aktif_sozluk = ebced_alfabe if mod == "ebced" else standart_alfabe for harf in kelime: if harf in aktif_sozluk: deger = aktif_sozluk[harf] harf_sayilari.append(str(deger)) harf_gosterimi.append(f"{harf}({deger})") if harf_sayilari: kelime_sayisi = "".join(harf_sayilari) sayi_gruplari.append(kelime_sayisi) detaylar.append(f"{kelime} -> {' + '.join(harf_gosterimi)} -> {kelime_sayisi}") baglac = str(secenek) olusan_sayi_str = baglac.join(sayi_gruplari) if not olusan_sayi_str: return None, None, False, harekesiz_metin, [] olusan_sayi = int(olusan_sayi_str) kalan = olusan_sayi % 19 bolunur_mu = (kalan == 0) return olusan_sayi_str, kalan, bolunur_mu, harekesiz_metin, detaylar # ---- PANEL ANA DÖNGÜSÜ ---- print("="*75) print(" ARAPÇA METİN TAM KONTROL PANELİ (Standart, Lamelif=31 ve Ebced) ") print(" Çıkmak için 'çıkış' yazabilirsiniz. ") print("="*75) while True: giris_metni = input("\nLütfen Arapça metni girin: ").strip() if giris_metni.lower() == 'çıkış': print("Sorgu paneli kapatıldı.") break if not giris_metni: continue # Hesaplamaları yapalım s19_std, k19_std, r19_std, temiz_metin, d_std = arapca_metni_sayiya_cevir(giris_metni, 19, "standart") s31_std, k31_std, r31_std, _, _ = arapca_metni_sayiya_cevir(giris_metni, 31, "standart") s19_lam, k19_lam, r19_lam, _, d_lam = arapca_metni_sayiya_cevir(giris_metni, 19, "lamelif") s31_lam, k31_lam, r31_lam, _, _ = arapca_metni_sayiya_cevir(giris_metni, 31, "lamelif") s19_ebc, k19_ebc, r19_ebc, _, d_ebc = arapca_metni_sayiya_cevir(giris_metni, 19, "ebced") s31_ebc, k31_ebc, r31_ebc, _, _ = arapca_metni_sayiya_cevir(giris_metni, 31, "ebced") if s19_std is None: print("Hata: Geçerli Arapça harf bulunamadı!") continue print("\n" + "="*75) print(f"Harekelerden Arındırılmış Metin: {temiz_metin}") print("="*75) # 1. Mod: Standart print("[1] STANDART ALFABE SIRASI (ل=23, ا=1)") print(f" > Arası 19: {s19_std} | Kalan: {k19_std} | Bölünme: {'✅ EVET' if r19_std else '❌ HAYIR'}") print(f" > Arası 31: {s31_std} | Kalan: {k31_std} | Bölünme: {'✅ EVET' if r31_std else '❌ HAYIR'}") # 2. Mod: Lamelif print("\n[2] LAMELİF ÖZEL DURUMU (لا=31)") print(f" > Arası 19: {s19_lam} | Kalan: {k19_lam} | Bölünme: {'✅ EVET' if r19_lam else '❌ HAYIR'}") print(f" > Arası 31: {s31_lam} | Kalan: {k31_lam} | Bölünme: {'✅ EVET' if r31_lam else '❌ HAYIR'}") # 3. Mod: Ebced print("\n[3] EBCED DEĞERİ SİSTEMİ (ب=2, س=60, م=40...)") print(f" > Harflerin Sırasıyla Ebcedi Kelimeler Arası 19 ile oluşan sayı >>19'un katıdır.: {s19_ebc} | Kalan: {k19_ebc} | Bölünme: {'✅ EVET' if r19_ebc else '❌ HAYIR'}") print(f" > Arası 31: {s31_ebc} | Kalan: {k31_ebc} | Bölünme: {'✅ EVET' if r31_ebc else '❌ HAYIR'}") print("="*75)
Output