• 0

كيف أجد تكرارات السلسلة النصية في البايثون ؟

لدي سلسلة نصية وأريد معرفة هل توجد تكرارات فيها مثل جملة معينة أو كلمة معين أو أرقام معين (مجموعات تتكرر وليس مفردات) ؟ وما هو الشيء الذي يتكرر ؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

هنالك العديد من الحلول لإيجاد التكرار في سلسلة نصية، فيمكنك على سبيل المثال استعمال هذا الحل لأنه يتجنب التعابير العادية (regular expressions) والبطء في حلقات التكرار في البايثون:

def principal_period(s):
    i = (s+s).find(s, 1, -1)
    return None if i == -1 else s[:i]

وهذا حل آخر لكن باستخدام التعابير العادية:

import re

REPEATER = re.compile(r"(.+?)\1+$")

def repeated(s):
    match = REPEATER.match(s)
    return match.group(1) if match else None

سأقوم بشرح التعبير (.+?)\1+$ لذلك قمت بتقسيمه إلى ثلاثة أجزاء:

  • (.+?) سوف يقوم بمقارنة مجموعة تحتوي على الأقل على واحد من أي حرف.
  • \1+ سوف يتأكد من تكرار واحد في مجموعة المطابقة في الجزء الأول.
  • $ سوف يتأكد من نهاية السلسلة النصية ولقد وضعناه للتأكد من أنه لا يوجد أي إضافات.

أرجو أن يكون الشرح سهلا.

المصدر

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن