البرمجة

بحث عن جمل في ملف CSV باستخدام Python Regex

مشكلتك تبدو واضحة وهي أنك تريد البحث عن الكلمة بشكل كامل في النصوص وليس فقط كجزء من كلمة أخرى. يمكنك تحقيق هذا باستخدام تعبير منتظم (Regex) في بايثون. إليك كيف يمكنك تطبيق هذا التغيير على الجزء المهم من الكود:

python
import pandas as pd import re if form.is_valid(): cd = form.cleaned_data aranan = cd['aranan'] sen1 = pd.read_csv('.../Corpus.csv', encoding="utf-8") sen1 = sen1.sentence1_stop sen2 = pd.read_csv('.../Corpus.csv', encoding="utf-8") sen2 = sen2.sentence2_stop for i in range(len(sen1)): if (re.search(r'\b' + re.escape(aranan) + r'\b', sen1[i]) and re.search(r'\b' + re.escape(aranan) + r'\b', sen2[i])): # do something

في هذا التعديل، استخدمنا re.search للبحث عن الكلمة كاملة \b تعني بداية أو نهاية كلمة. re.escape يساعد في التعامل مع حالات الكلمات التي تحتوي على أحرف خاصة مثل . أو * لتجنب أن تتم معاملتها كحروف معنوية في التعبير المنتظم.

المزيد من المعلومات

بالتأكيد! يبدو أنك تعمل على برنامج يقوم بالبحث عن جمل في ملف CSV باستخدام كلمة محددة. يمكننا تحسين الكود قليلاً لجعله أكثر فعالية ووضوحًا. فيما يلي بعض النصائح والتحسينات:

  1. استخدام تعبير منتظم (Regex): لاستبدال البحث البسيط باستخدام in ببحث أكثر تعقيدًا لتحقيق مطابقة الكلمة بشكل كامل.

  2. استخدام زوج zip: للتكرار على القوائم sen1 و sen2 في وقت واحد.

  3. استخدام enumerate: للحصول على فهرس العناصر في حلقة التكرار بدلاً من استخدام range(len(sen1)).

  4. تحسين أداء القراءة من ملف CSV: قد تستخدم pandas لقراءة الملف مرتين للحصول على sen1 و sen2، يمكنك استخدام pandas مرة واحدة للحصول على البيانات وتقسيمها.

وهنا الكود المحسن:

python
import pandas as pd import re if form.is_valid(): cd = form.cleaned_data aranan = cd['aranan'] df = pd.read_csv('.../Corpus.csv', encoding="utf-8") sen1 = df['sentence1_stop'] sen2 = df['sentence2_stop'] for idx, (s1, s2) in enumerate(zip(sen1, sen2)): if (re.search(r'\b' + re.escape(aranan) + r'\b', s1) and re.search(r'\b' + re.escape(aranan) + r'\b', s2)): # do something

هذه التحسينات ستجعل الكود أكثر فعالية وسهولة قراءة.

زر الذهاب إلى الأعلى