اذهب إلى المحتوى
  • 0

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

HardWord

السؤال

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

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 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+ سوف يتأكد من تكرار واحد في مجموعة المطابقة في الجزء الأول.
  • $ سوف يتأكد من نهاية السلسلة النصية ولقد وضعناه للتأكد من أنه لا يوجد أي إضافات.

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

المصدر

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...