import sys if "/service_account_records" not in list(sys.path): sys.path.append("/service_account_records") import re from difflib import get_close_matches from configs import AccountConfig def word_straighten(word, ref_list, threshold=0.8): matches = get_close_matches(word, ref_list, n=1, cutoff=threshold) return matches[0] if matches else word def category_finder(text, output_template="{kategori} {numara}"): categories = AccountConfig.CATEGORIES result = { category: [] for category in categories } # Sonuçları depolamak için bir sözlük for category, patterns in categories.items(): words = re.split(r"\W+", text) straighten_words = [word_straighten(word, patterns) for word in words] straighten_text = " ".join(straighten_words) pattern = ( r"(?:\b|\s|^)(?:" + "|".join(map(re.escape, patterns)) + r")(?:\s*|:|\-|\#)*(\d+)(?:\b|$)" ) if founds_list := re.findall(pattern, straighten_text, re.IGNORECASE): list_of_output = [ output_template.format(kategori=category, numara=num) for num in founds_list ] result[category].extend( [i for i in list_of_output if str(i).replace(" ", "")] ) return result