Strings - Learn Python 3 - Snakify

Lesson 5
سلاسل


1. سلاسل

يمكن قراءة السلسلة من الإدخال القياسي باستخدام الدالة input() أو تعريفها في علامات اقتباس مفردة أو مزدوجة. يمكن أن تكون السلسلتين متسلسلتين ، ويمكننا أيضًا تكرار سلسلة n من الأزمنة بضربه عددًا صحيحًا:

print('>_< ' * 5)  # &gt; _ &lt;&gt; _ &lt;&gt; _ &lt;&gt; _ &lt;&gt; _ &lt;

سلسلة في Python هي سلسلة من الأحرف. تقوم الدالة len(some_string) بإرجاع عدد الأحرف الموجودة في سلسلة:

print(len('abcdefghijklmnopqrstuvwxyz'))  # 26

يمكن تحويل كل كائن في Python إلى سلسلة باستخدام str(some_object) الدالة str(some_object) . حتى نتمكن من تحويل الأرقام إلى سلاسل:

s = str(2 ** 100)
print(s)  # 1267650600228229401496703205376
print(len(s))  # 31
Advertising by Google, may be based on your interests

2. شرائح: حرف واحد

تعطي شريحة من السلسلة المعطاة حرفًا واحدًا أو جزءًا معينًا: السلسلة الفرعية أو اللاحقة.

هناك ثلاثة أشكال للشرائح. أبسط شكل من أشكال شريحة: شريحة ذات طابع واحد S[i] يعطي i حرف من سلسلة ال. نحسب الأحرف بدءًا من 0. وهذا يعني ، إذا كانت S = 'Hello' و S[0] == 'H' و S[1] == 'e' و S[2] == 'l' و S[3] == 'l' ، S[4] == 'o' . لاحظ أنه في Python لا يوجد نوع منفصل لأحرف السلسلة. S[i] أيضاً str نوع ، تماماً مثل السلسلة المصدر.

يسمى الرقم i في S[i] فهرس .

إذا حددت فهرسًا سالبًا ، فسيتم حسابه من النهاية ، بدءًا بالرقم -1 . وهذا يعني ، S[-1] == 'o' ، S[-2] == 'l' ، S[-3] == 'l' ، S[-4] == 'e' ، S[-5] == 'H' .

دعونا نلخصها في الجدول:

سلاسل H البريد ل ل س
فهرس S [0] S [1] S [2] S [3] 4 س]
فهرس S [-5] 4 س] S [-3] S [-2] S [-1]

إذا كان الفهرس في الشريحة S[i] أكبر من أو يساوي len(S) ، أو أقل من -len(S) ، يحدث الخطأ التالي IndexError: string index out of range .

Advertising by Google, may be based on your interests

3. شرائح: سلسلة فرعية

الشريحة ذات معلمتين S[a:b] بارجاع السلسلة الفرعية للطول b - a ، بدءا من الحرف في الفهرس a ودائم حتى الحرف في index b ، لا بما في ذلك الحرف الأخير. على سبيل المثال ، S[1:4] == 'ell' ، ويمكنك الحصول على نفس السلسلة الفرعية باستخدام S[-4:-1] . يمكنك مزج فهارس موجبة وسالبة في الشريحة نفسها ، على سبيل المثال ، S[1:-1] هي سلسلة فرعية بدون الحرف الأول والأخير من السلسلة (تبدأ الشريحة بالحرف مع الفهرس 1 وتنتهي بفهرس من -1 ، وليس بما في ذلك).

الشرائح مع معلمتين أبداً لا تتسبب في IndexError . على سبيل المثال ، بالنسبة إلى S == 'Hello' ، ترجع الشريحة S[1:5] السلسلة 'ello' ، والنتيجة هي نفسها حتى إذا كان الفهرس الثاني كبيرًا جدًا ، مثل S[1:100] .

إذا حذفت المعلمة الثانية (لكن احتفظت بنقطتين) ، فستنتقل الشريحة إلى نهاية السلسلة. على سبيل المثال ، لإزالة الحرف الأول من السلسلة (مؤشره هو 0) تأخذ الشريحة S[1:] . وبالمثل ، إذا حذفت المعلمة الأولى ، فستأخذ Python الشريحة من بداية السلسلة. بمعنى ، لإزالة آخر حرف من السلسلة ، يمكنك استخدام الشريحة S[:-1] . الشريحة S[:] تطابق السلسلة S نفسها.

Advertising by Google, may be based on your interests

4. شرائح: ثبات السلاسل

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

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

دعنا نثبت ذلك:

s = 'Hello'
t = s  # s و t أشر إلى نفس السلسلة
t = s[2:4]  # الآن ر يشير إلى السلسلة الجديدة &quot;ليرة لبنانية&quot;
print(s)  # مطبوعات &quot;مرحبا&quot; كما لا يتم تغيير الصورة
print(t)  # يطبع &#39;ليرة لبنانية&#39;
Advertising by Google, may be based on your interests

5. شرائح: لاحق

إذا قمت بتحديد شريحة ذات ثلاثة معلمات S[a:b:d] ، تحدد المعلمة الثالثة الخطوة ، كما هي بالنسبة range() الوظيفة range() . في هذه الحالة فقط يتم أخذ الأحرف مع الفهرس التالي: a a + d ، a + 2 * d وهكذا ، حتى لا بما في ذلك الحرف مع فهرس b . إذا كانت المعلمة الثالثة تساوي 2 ، تأخذ الشريحة كل حرف ثاني ، وإذا كانت خطوة الشريحة تساوي -1 ، -1 الحروف بترتيب عكسي. على سبيل المثال ، يمكنك عكس سلسلة مثل هذه: S[::-1] . دعونا نرى الأمثلة:

s = 'abcdefg'
print(s[1])
print(s[-1])
print(s[1:3])
print(s[1:-1])
print(s[:3])
print(s[2:])
print(s[:-1])
print(s[::2])
print(s[1::2])
print(s[::-1])
لاحظ كيف أن المعلمة الثالثة للشريحة تشبه المعلمة الثالثة range() الدوال range() :
s = 'abcdefghijklm'
print(s[0:10:2])
for i in range(0, 10, 2):
    print(i, s[i])
Advertising by Google, may be based on your interests

6. طرق السلسلة: find () و rfind ()

الطريقة هي دالة مرتبطة بالكائن. عندما يتم استدعاء الطريقة ، يتم تطبيق الأسلوب على الكائن ويقوم ببعض الحسابات المتعلقة به. يتم استدعاء أساليب كـ object_name.method_name(arguments) . على سبيل المثال ، في s.find("e") يتم تطبيق أسلوب السلسلة find() على السلسلة s بوسيطة واحدة "e" .

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

s = 'Hello'
print(s.find('e'))
# 1
print(s.find('ll'))
# 2
print(s.find('L'))
# -1

وبالمثل ، rfind() فهرس التواجد الأخير من السلسلة الفرعية.

s = 'abracadabra'
print(s.find('b'))
# 1
print(s.rfind('b'))
# 8

إذا قمت باستدعاء find() بثلاث وسيطات s.find(substring, left, right) ، يتم إجراء البحث داخل الشريحة s[left:right] . إذا قمت بتحديد اثنين فقط من الحجج، مثل s.find(substring, left) ، يتم تنفيذ البحث في شريحة s[left:] ، وهذا هو، بدءا من الحرف في مؤشر left إلى نهاية السلسلة. الأسلوب s.find(substring, left, right) يُرجع الفهرس المطلق ، نسبياً إلى السلسلة بأكملها s ، وليس إلى الشريحة.

s = 'my name is bond, james bond, okay?'
print(s.find('bond'))
# 11
print(s.find('bond', 12))
# 23
Advertising by Google, may be based on your interests

7. طرق السلسلة: استبدال ()

replace() الأسلوب replace() يستبدل كافة تكرارات سلسلة فرعية مع أخرى. بناء الجملة: s.replace(old, new) السلسلة S ويستبدل كل تكرارات السلسلة الفرعية old بالسلسلة الفرعية new . مثال:

print('a bar is a bar, essentially'.replace('bar', 'pub'))
# &quot;الحانة هي حانة ، بشكل أساسي&quot;

يمكن للمرء أن يجتاز count الوسيطة الثالث ، مثل هذا: s.replace(old, new, count) . فإنه يجعل replace() ليحل محل فقط count التكرارات الأولى ثم يتوقف.

print('a bar is a bar, essentially'.replace('bar', 'pub', 1))
# &quot;الحانة هي حانة ، بشكل أساسي&quot;
Advertising by Google, may be based on your interests

8. طرق السلسلة: العد ()

تحسب هذه الطريقة عدد مرات ظهور سلسلة واحدة داخل سلسلة أخرى. أبسط شكل هو هذا واحد: s.count(substring) . تؤخذ فقط الأحداث غير المتداخلة في الاعتبار:

print('Abracadabra'.count('a'))
# 4
print(('aaaaaaaaaa').count('aa'))
# 5

إذا قمت بتحديد ثلاث معلمات s.count(substring, left, right) ، يتم تنفيذ العد داخل الشريحة s[left:right] .

Advertising by Google, may be based on your interests