7 طرق كيفية التحقق مما إذا كانت سلسلة Python تحتوي على سلسلة فرعية

العمل مع السلاسل مهمة شائعة في بايثون. غالبًا ما تحتاج إلى معرفة ما إذا كانت السلسلة تحتوي على سلسلة أخرى.

إن أبسط الطرق للتحقق مما إذا كانت سلسلة Python تحتوي على سلسلة فرعية تتضمن عامل التشغيل "in" ووظيفة find () وطريقة index (). يمكن حل السيناريوهات الأكثر تعقيدًا باستخدام التعبيرات العادية أو مكتبة خارجية مثل Pandas.

يوضح لك هذا المقال:

  • أربع طرق بسيطة

  • وظيفتان أكثر تعقيدًا في regex

  • طريقة باستخدام مكتبة الباندا

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

هيا بنا نبدأ!

جدول المحتويات

أساسيات سلاسل بايثون

السلسلة في Python هي سلسلة من الأحرف تُستخدم لتمثيل البيانات المستندة إلى النص. يمكن أن تتضمن أحرفًا وأرقامًا ورموزًا ومسافات بيضاء.

إنه أحد أنواع البيانات المضمنة في Python ويمكن إنشاؤه باستخدام إما:

  • ونقلت واحدة (' ')

  • التنصيص (" ")

  • علامات الاقتباس الثلاثية ("" "" أو "" "" "")

تتم فهرسة السلاسل ، مما يعني أنه يمكنك الوصول إلى أحرف معينة من خلال الرجوع إلى رقم الفهرس الخاص بها. مؤشر البداية هو 0 ، مما يعني أن الحرف الأول من السلسلة يحتوي على فهرس 0 ، والثاني يحتوي على فهرس 1 ، وهكذا.

بعد ذلك ، ننظر في طرق التحقق من السلاسل الفرعية.

4 أبسط طرق للتحقق من السلاسل الفرعية

توفر Python العديد من الطرق للتحقق من وجود سلسلة فرعية معينة داخل سلسلة أكبر. بعضها أكثر تعقيدًا من البعض الآخر. بالنسبة إلى عمليات التحقق الأساسية ، فإن أبسط الطرق هي عامل التشغيل أو إحدى طرق السلسلة الثلاث.

  1. في المشغل

  2. find () طريقة

  3. طريقة الفهرس ()

  4. طريقة العد ()

7 طرق كيفية التحقق مما إذا كانت سلسلة Python تحتوي على سلسلة فرعية

1. في المشغل

عامل التشغيل 'in' في Python هو طريقة بسيطة وبديهية للتحقق من وجود سلسلة واحدة ضمن سلسلة أخرى. يتحقق هذا العامل من العضوية ويعيد قيمة منطقية:

  • صحيح إذا تم العثور على السلسلة الفرعية داخل السلسلة الرئيسية

  • خطأ إذا لم يكن كذلك

إليك بعض نماذج الشفرة:

s = "Hello, world!"
sub = "world"
result = sub in s
print(result)  # Output: True

عامل التشغيل "in" حساس لحالة الأحرف. هذا يعني أنه يتعامل مع الأحرف الصغيرة والكبيرة على أنها مختلفة. لن يعثر الكود أعلاه على السلسلة الفرعية "hello" ، لذا فإن عامل التشغيل يعود بالقيمة false.

إذا كنت تريد إجراء فحص غير حساس لحالة الأحرف ، فيمكنك تحويل كل من السلسلة الرئيسية والسلسلة الفرعية إلى الحالة نفسها قبل إجراء الفحص:

s = "Hello, world!"
sub = "hello"
result = sub.lower() in s.lower()
print(result)  # Output: True

عيب عامل التشغيل in هو أنه لا يوفر موضع السلسلة الفرعية داخل السلسلة الرئيسية. لذلك ، ستحتاج إلى طريقة أخرى في هذا القسم. واصل القراءة…

2. البحث عن طريقة ()

تُرجع طريقة find () الفهرس الأول الذي تظهر عنده السلسلة الفرعية ، أو -1 إذا لم يتم العثور على السلسلة الفرعية.

يمكنك استدعاء طريقة find () على سلسلة s ، وتمرير السلسلة الفرعية كوسيطة . هنا مثال:

s = "Hello, world!"
sub = "world"
index = s.find(sub)

if index != -1:
     print("Found at index:", index)  # Output: Found at index: 7
else:
     print("Not found")

يمكنك اختياريا تحديد فهرس البداية أو النهاية لتقييد بحثك. عيب هذه الطريقة أنها تتوقف عند التكرار الأول.

3. طريقة الفهرس

تتشابه طريقة index () تمامًا مع طريقة find () ، فيما عدا أنها تثير خطأ ValueError عندما لا يتم العثور على السلسلة الفرعية. هذا يعني أنه يجب عليك إنهاء المكالمة في قسم "تجربة / استثناء".

لاستخدام طريقة index () ، استدعها على سلسلة s ، وقم بتمرير السلسلة الفرعية كوسيطة .

s = "Hello, world!"
sub = "world"

try: 
     index = s.index(sub)
     print("Found at index:", index)  # Output: Found at index: 7
except ValueError:
     print("Not found")

تتوقف هذه الطريقة أيضًا عند أول سلسلة فرعية داخل النص.

4. طريقة العد ()

تحسب طريقة .count () عدد مرات حدوث سلسلة فرعية في السلسلة الأصلية. تقوم بإرجاع عدد صحيح يمثل هذا العدد. إذا لم يتم العثور على السلسلة الفرعية في السلسلة الرئيسية ، فإنها ترجع 0.

إليك مثال بسيط يبحث عن الحرف "o" في النص "Hello، world!":

s = "Hello, world!"
sub = "o"
print(s.count(sub))  # Output:2

طريقتان لمطابقة السلاسل مع التعبيرات العادية

يعد استخدام التعبيرات العادية (regex) أكثر تعقيدًا قليلاً من الطرق المذكورة في القسم السابق. ومع ذلك ، فإنها توفر لك المزيد من الخيارات للبحث عن النص الذي تتعامل معه وتحليله.

طريقتان من أسهل الطرق في وحدة إعادة هما:

  1. يبحث()

  2. جد كل()

7 طرق كيفية التحقق مما إذا كانت سلسلة Python تحتوي على سلسلة فرعية

1. re.Search ()

تبحث وظيفة search () في الوحدة النمطية re عن نمط في سلسلة معينة وترجع كائنًا مطابقًا إذا تم العثور على تطابق. وإلا فإنها ترجع بلا .

بشكل افتراضي ، تكون الوظيفة حساسة لحالة الأحرف. يمكنك استخدام علامة re.IgnoreCase لتجنب حساسية حالة الأحرف.

إليك مثال بسيط يستخدم العبارات الشرطية بناءً على ما إذا كانت السلسلة موجودة أم لا:

import re
pattern = "python"
text = "I love Python programming"
match = re.search(pattern, text, re.IGNORECASE)

if match: 
     print("Pattern found")
else:
     print("Pattern not found")

لاحظ أن هذه الطريقة تعثر على التطابق الأول ثم تتوقف عن البحث. إذا كنت تريد العثور على جميع التطابقات ، فإن القائمة التالية في هذه القائمة تناسبك.

2. re.Findall ()

يعثر هذا الأسلوب على جميع تكرارات نمط البحث في سلسلة معينة ويعيد قائمة تحتوي على جميع التطابقات.

يستخدم هذا المثال نمطًا يطابق رقمًا واحدًا أو أكثر في سلسلة. تحتوي السلسلة النصية "123 ، 456 ، 789" على ثلاثة متواليات من الأرقام.

import re 

pattern = "d+" 
text = "123, 456, 789" 
numbers = re.findall(pattern, text) 

print(numbers)

هذه هي الإجابة من نموذج الكود: ['123'، '456'، '789'].

كيفية البحث عن السلاسل الفرعية مع الباندا

7 طرق كيفية التحقق مما إذا كانت سلسلة Python تحتوي على سلسلة فرعية

Pandas هي مكتبة شعبية مفتوحة المصدر لتحليل البيانات ومعالجتها في Python. يوفر هياكل البيانات والوظائف اللازمة لمعالجة وتحليل البيانات المنظمة.

يعد DataFrame أحد هياكل البيانات الأساسية التي توفرها Pandas . يمكنك استخدام بنية البيانات متعددة الاستخدامات هذه للتحقق من وجود سلسلة واحدة داخل أخرى.

تتمثل ميزة Pandas في أنها توفر حزمًا من التعليمات البرمجية التي يجب عليك كتابتها على نطاق واسع بلغات البرمجة الأخرى. على وجه التحديد ، يتم تعبئة قدر كبير من الطاقة داخل وظيفة التضمين.

يحتوي str.contains () وظيفة في الباندا

تختبر طريقة str.contains () ما إذا كان نمط محدد أو تعبير عادي موجودًا ضمن سلسلة من عمود DataFrame.

فيما يلي مثال يستورد المكتبة ويبحث عن سلسلة ضمن قائمة السلاسل:

import pandas as pd

# Creating a sample DataFrame 
data = {'fruits': ['apple', 'banana', 'cherry', 'watermelon', 'orange']} 
df = pd.DataFrame(data) 

# Searching for substrings in the 'fruits' column 
has_an = df['fruits'].str.contains(pat='an', regex=False)

# Filtering the DataFrame based on the search results 
filtered_df = df[has_an] 
print(filtered_df)

في هذا المثال ، نبحث عن السلسلة الفرعية "an" في عمود "الفواكه" ونقوم بتصفية DataFrame وفقًا لذلك. سيكون الإخراج:

  • 1 موزة

  • 4 برتقالي

إذا كنت تبحث عن المزيد من الأمثلة لما يمكن أن تفعله Pandas ، فراجع هذا الفيديو:

نصائح لاختيار طريقة محددة في بايثون

يعتمد اختيار الطريقة بشكل كبير على المتطلبات المحددة لمهمتك.

فيما يلي أربعة أسباب لاختيار إحدى الطرق التي تعلمتها من هذه المقالة ، بالإضافة إلى طريقة مكافأة واحدة ستتعلمها في مكان آخر على هذه المدونة:

  1. سرعة المعالجة

  2. تحتاج إلى معرفة موقع السلسلة الفرعية

  3. تحتاج إلى معرفة عدد تكرارات السلسلة الفرعية

  4. تريد مطابقة الأنماط المعقدة

  5. إجراء تحليل النص

1. سرعة المعالجة

7 طرق كيفية التحقق مما إذا كانت سلسلة Python تحتوي على سلسلة فرعية

يعتبر 'in' 0perator هو الخيار الأفضل إذا كنت تريد ببساطة معرفة ما إذا كانت هناك سلسلة فرعية موجودة داخل سلسلة.

إنه بسيط وبديهي وسريع لهذا الغرض. ومع ذلك ، فإنه لا يوفر معلومات حول موقع أو عدد السلسلة الفرعية.

2. موقع السلسلة الفرعية

استخدم أساليب .find () أو .index () إذا كنت بحاجة إلى معرفة موضع التكرار الأول لسلسلة فرعية داخل سلسلة.

كلاهما يعيد فهرس التواجد الأول للسلسلة الفرعية.

3. عدد Substring

استخدم الأسلوب .count () عندما تريد معرفة عدد مرات حدوث سلسلة فرعية في سلسلة.

4. الأنماط المعقدة

إذا كنت بحاجة إلى مطابقة الأنماط المعقدة أو إجراء عمليات بحث غير حساسة لحالة الأحرف ، فإن التعبيرات العادية هي الأكثر مرونة. يمكن لوظيفة re.search () التعامل مع أنماط تتجاوز السلاسل الفرعية البسيطة ويمكنها بسهولة إجراء عمليات بحث غير حساسة لحالة الأحرف.

ومع ذلك ، يمكن أن تكون التعبيرات العادية مبالغة في اختبارات السلاسل الفرعية البسيطة ويمكن أيضًا أن تكون أبطأ وأكثر تعقيدًا في الاستخدام والصيانة.

5. إجراء تحليل النص

تحقق من مقالتنا حول تحليل النص في Python ، والتي توضح لك كيفية العمل مع مكتبة textblob.

يمكنك استخدام وظيفة .tags للتحقق من وجود أجزاء من الكلام أو وظيفة .ngram للعثور على الكلمات التي تظهر معًا بشكل متكرر في المستند.

افكار اخيرة

لقد تعلمت سبع طرق للتحقق مما إذا كان كائن كلمة أو سلسلة مضمنة في كائن آخر. تضمنت هذه العوامل مشغلي العضوية والوظائف المدمجة ووظائف regex ووظائف Pandas.

كل طريقة صحيحة لبعض المواقف ولكن ليس للجميع. استخدم هذه المقالة كورقة غش بينما تتقن لغة برمجة Python وتستخدم أفضل حل لمهمة تحليل السلسلة الخاصة بك.

تذكر أنه لا توجد طريقة واحدة تناسب الجميع. كل نهج له امتيازاته ومراوغاته الخاصة ، لذلك لا تتردد في اختيار الأسلوب الذي يناسب أسلوبك أو المشكلة المحددة التي تحاول حلها. في نهاية اليوم ، تهدف Python إلى جعل حياتك أسهل ، لذا احتضن مرونتها!

Leave a Comment

تقنية تصور LuckyTemplates: تعرف على كيفية إنشاء لوحات تصميم الخلفية

تقنية تصور LuckyTemplates: تعرف على كيفية إنشاء لوحات تصميم الخلفية

تعرف على تقنية تصور LuckyTemplates هذه حتى تتمكن من إنشاء قوالب الخلفية واستيرادها إلى تقارير LuckyTemplates الخاصة بك.

ما هي الذات في بايثون: أمثلة من العالم الحقيقي

ما هي الذات في بايثون: أمثلة من العالم الحقيقي

ما هي الذات في بايثون: أمثلة من العالم الحقيقي

كيفية حفظ وتحميل ملف RDS في R.

كيفية حفظ وتحميل ملف RDS في R.

ستتعلم كيفية حفظ وتحميل الكائنات من ملف .rds في R. ستغطي هذه المدونة أيضًا كيفية استيراد الكائنات من R إلى LuckyTemplates.

تمت إعادة النظر في أول N أيام عمل - حل لغة ترميز DAX

تمت إعادة النظر في أول N أيام عمل - حل لغة ترميز DAX

في هذا البرنامج التعليمي للغة ترميز DAX ، تعرف على كيفية استخدام وظيفة الإنشاء وكيفية تغيير عنوان القياس ديناميكيًا.

اعرض الرؤى باستخدام تقنية المرئيات الديناميكية المتعددة الخيوط في LuckyTemplates

اعرض الرؤى باستخدام تقنية المرئيات الديناميكية المتعددة الخيوط في LuckyTemplates

سيغطي هذا البرنامج التعليمي كيفية استخدام تقنية Multi Threaded Dynamic Visuals لإنشاء رؤى من تصورات البيانات الديناميكية في تقاريرك.

مقدمة لتصفية السياق في LuckyTemplates

مقدمة لتصفية السياق في LuckyTemplates

في هذه المقالة ، سأقوم بتشغيل سياق عامل التصفية. يعد سياق عامل التصفية أحد الموضوعات الرئيسية التي يجب على أي مستخدم LuckyTemplates التعرف عليها في البداية.

أفضل النصائح في استخدام التطبيقات في خدمة LuckyTemplates عبر الإنترنت

أفضل النصائح في استخدام التطبيقات في خدمة LuckyTemplates عبر الإنترنت

أريد أن أوضح كيف يمكن لخدمة تطبيقات LuckyTemplates عبر الإنترنت أن تساعد في إدارة التقارير والرؤى المختلفة التي تم إنشاؤها من مصادر مختلفة.

تحليل تغييرات هامش الربح بمرور الوقت - التحليلات باستخدام LuckyTemplates و DAX

تحليل تغييرات هامش الربح بمرور الوقت - التحليلات باستخدام LuckyTemplates و DAX

تعرف على كيفية إجراء تغييرات في هامش الربح باستخدام تقنيات مثل قياس التفرع والجمع بين صيغ DAX في LuckyTemplates.

أفكار التجسيد لذاكرة التخزين المؤقت للبيانات في DAX Studio

أفكار التجسيد لذاكرة التخزين المؤقت للبيانات في DAX Studio

سيناقش هذا البرنامج التعليمي أفكار تجسيد مخازن البيانات وكيفية تأثيرها على أداء DAX ​​في توفير النتائج.

إعداد تقارير الأعمال باستخدام LuckyTemplates

إعداد تقارير الأعمال باستخدام LuckyTemplates

إذا كنت لا تزال تستخدم Excel حتى الآن ، فهذا هو أفضل وقت لبدء استخدام LuckyTemplates لاحتياجات إعداد تقارير الأعمال الخاصة بك.