ahmed1990 نشر 7 نوفمبر 2015 أرسل تقرير نشر 7 نوفمبر 2015 يمتلك بايثون دالات مثل string.find() وstring.rfind() للحصول على موقع كلمة في سلسلة نصية، فهل توجد دالة أستطيع الحصول عن طريقها على مواقع جميع تكرار كلمة معينة في بايثون؟ اقتباس
0 هشام رزق الله نشر 7 نوفمبر 2015 أرسل تقرير نشر 7 نوفمبر 2015 للأسف فحسب علمي لا توجد دالة مدمجة للحصول على مواقع تكرارات كلمة معينة في بايثون لكن على الرغم من ذلك توجد العديد من الطرق لفعل ذلك الأمر بدون استدعاء أي دوال أو وحدات.يمكنك على سبيل المثال، استخدام التعابير النمطية للحصول على ما أردته كما في هذا المثال:>>> [m.start() for m in re.finditer('test', 'test test test test')] [0, 5, 10, 15] أو يمكنك استخدام حلقة التكرار for مع دالة startswith كما في هذا المثال:>>> string = "test test test test" >>> [i for i in range(len(string)) if string.startswith('test', i)] [0, 5, 10, 15] def find_all(a_str, sub): start = 0 while True: start = a_str.find(sub, start) if start == -1: return yield start start += len(sub) # use start += 1 to find overlapping matches list(find_all('spam spam spam spam', 'spam')) # [0, 5, 10, 15]المصدر اقتباس
السؤال
ahmed1990
يمتلك بايثون دالات مثل string.find() وstring.rfind() للحصول على موقع كلمة في سلسلة نصية، فهل توجد دالة أستطيع الحصول عن طريقها على مواقع جميع تكرار كلمة معينة في بايثون؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.