؛

التنقل في المنتدى
تحتاج لتسجيل الدخول لإنشاء مشاركات أو مواضيع.

بايثون3 مِن مدارس w3-12Python Strings

السلاسل النصِّيَّة في بايثون

سلسلة نصِّيَّة
تُحاط السلاسل النصِّيَّة في لغة بيثون إما بعلامات اقتباس مفردة أو بعلامات اقتباس مزدوجة.
'hello' هي نفسها "hello" .
يمكنكَ عرض سلسلة نصِّيَّة مع الدالة print()
مثال
print("Hello")
print('Hello')

ستكون النتيجة:
Hello
Hello
جربها بنفسك مِن ملف string_literal.py

إسناد سلسلة نصِّيَّة إلى متغير
يتم إسناد سلسلة نصِّيَّة إلى متغير, باسم المتغير متبوعًا بعلامة يساوي ثُمَّ السلسلة:
مثال
a = "Hello"
print(a)

ستكون النتيجة:
Hello
جربها بنفسك مِن ملف string_var.py

سلاسل متعددة الأسطُر
يمكنك إسناد سلسلة نصِّيَّة متعددة الأسطر إلى متغير باستخدام ثلاث علامات اقتباس:
مثال
يمكنك استخدام ثلاث علامات اقتباس مزدوجة:
a = """Hello world,
I am learning python,
I will be a programmer in the future,
and I will share in developing NVDA."""
print(a)

ستكون النتيجة:
Hello world,
I am learning python,
I will be a programmer in the future,
and I will share in developing NVDA.
جربها بنفسك مِن ملف string_multi.py

أو ثلاثة اقتباسات مفردة:
مثال
a = '''Hello world,
I am learning python,
I will be a programmer in the future,
and I will share in developing NVDA.'''
print(a)

ستكون النتيجة:
Hello world,
I am learning python,
I will be a programmer in the future,
and I will share in developing NVDA.
جربها بنفسك مِن ملف string_multi2.py
ملاحظة: في النتيجة ، يتم إدراج فواصل الأسطر في نفس الموضع كما في الكود.

السلاسل النصِّيَّة في بايثون عبارة عن صفائف(Arrays)
مثل العديد من لغات البرمجة الشائعة الأخرى ، فإن السلاسل في Python هي صفائف بايت(bytes) تمثل أحرف unicode.
ومع ذلك ، لا يحتوي Python على نوع بيانات الأحرف ، فالحرف الواحد هو ببساطة سلسلة نصِّيَّة بطول 1.
يمكن استخدام الأقواس المربعة للوصول إلى عناصر السلسلة النصِّيَّة.
مثال
الحصول على الحرف في الموضع(index) 1, تذَكر أن الحرف الأول له الموضع 0:
a = "Hello, World!"
print(a[1])

ستكون النتيجة:
e
جربها بنفسك مِن ملف string1.py

التقطيع(Slicing) أو استخلاص جزء مِن السلسلة النصِّيَّة
يمكنك إستخلاص نطاق من الأحرف في السلسلة النصِّيَّة باستخدام طريقةْ التقطيع(Slicing).
حدد مكان البداية ومكان النهاية ، مفصولين بنقطتين فوقيتين، لإستخلاص جزء من السلسلة النصِّيَّة.
مثال
الحصول على الأحرف من الموضع 2 إلى الموضع 5 (غير مُتضَمَّن):
b = "Hello, World!"
print(b[2:5])

ستكون النتيجة:
llo
جربها بنفسك مِن ملف string2.py

الفهرسة السلبية(Negative Indexing)
استخدم الفهارس السالبة(Negative Indexes) لبدء الشريحة من نهاية السلسلة:
ملاحظة: ال index لِآخِر حرف في السلسلة النصِّيَّة هو -1
مثال
الحصول على الأحرف من الموضع 5 إلى الموضع 1 (غير مدرج أو مُتضَمَّن) ، بدءًا من نهاية السلسلة:
b = "Hello, World!"
print(b[-5:-2])

ستكون النتيجة:
orl
جربها بنفسك مِن ملف string_negativeindex.py

طول السلسلة النصِّيَّة
للحصول على طول سلسلة ، استخدم الدالة len().
مثال
الدالة len() تعطيك طول السلسلة:
a = "Hello, World!"
print(len(a))

ستكون النتيجة:
13
جربها بنفسك مِن ملف string_len.py

وظائف أو دوال السلسلة
لدى Python مجموعة من الوظائف المتضمَنَة التي يمكنك استخدامها في السلاسل النصِّيَّة.
مثال
تُزيل وظيفة strip() أي مسافة بيضاء من البداية أو النهاية:
a = " Hello, World! "
print(a.strip()) # returns "Hello, World!"

ستكون النتيجة:
Hello, World!
جربها بنفسك مِن ملف string_strip.py

مثال
تقوم الوظيفة lower() بإرجاع السلسلة إلى حالة الأحرف الصغيرة:
a = "Hello, World!"
print(a.lower())

ستكون النتيجة:
hello, world!
جربها بنفسك مِن ملف string_lower.py

مثال
تقوم الوظيفة upper() بتحويل السلسلة إلى حالة الأحرف الكبيرة:
a = "Hello, World!"
print(a.upper())

ستكون النتيجة:
HELLO, WORLD!
جربها بنفسك مِن ملف string_upper.py

مثال
الوظيفة replace(),تستبدل هذه الوظيفة جزء مِن السلسلة النصِّيَّة بجزء آخَر:
a = "Hello, World!"
print(a.replace("H", "J"))

ستكون النتيجة:
Jello, World!
جربها بنفسك مِن ملف string_replace.py

مثال
split()تقسم هذه الوظيفة السلسلة النصِّيَّة إلى سلاسل فرعية إذا وجدت في السلسلة مثيلات للفاصل:
a = "Hello, World!"
print(a.split(",")) # returns ['Hello', ' World!']

ستكون النتيجة:
['Hello', ' World!']
جربها بنفسك مِن ملف string_split.py

التحقق من السلسلة
للتحقق مما إذا كانت عبارة معينة أو حرف موجود في سلسلة، يمكننا استخدام الكلمات الرئيسية in أو not in.
مثال
تحقق مما إذا كانت عبارة " ain " موجودة في النص التالي:
txt = "The rain in Spain stays mainly in the plain"
x = "ain" in txt
print(x)

ستكون النتيجة:
True
جربها بنفسك مِن ملف string_in.py

مثال
تحقق مما إذا كانت عبارة "ain" غير موجودة في النص التالي:
txt = "The rain in Spain stays mainly in the plain"
x = "ain"not in txt
print(x)

ستكون النتيجة:
False
جربها بنفسك مِن ملف string_not_in.py

دمج السلاسل النصِّيَّة(String Concatenation)
لضم أو دمج سلسلتين ، يمكنك استخدام علامةْ الجمع +.
مثال
دمج المتغير aمع المتغير bإلى المتغير c:
a = "Hello"
b = "World"
c = a + b
print(c)

ستكون النتيجة:
HelloWorld
جربها بنفسك مِن ملف string_concat.py

مثال
لإضافة مسافة بينهما ، أضف " ":
a = "Hello"
b = "World"
c = a + " " + b
print(c)

ستكون النتيجة:
Hello World
جربها بنفسك مِن ملف string_concat2.py

تنسيق السلسلة(String Format)
كما تعلَّمْنا في فصل Python Variables ، لا يمكننا الجمع بين السلاسل والأرقام مثل هذا:
مثال
age = 36
txt = "My name is John, I am " + age
print(txt)

ستكون النتيجة:
Traceback (most recent call last):
File "string_format_error.py", line 2, in <module>
txt = "My name is John, I am " + age
TypeError: must be str, not int
جربها بنفسك مِن ملف string_format_error.py

لكن يمكننا الجمع بين السلاسل والأرقام باستخدام الوظيفة format().
تأخذ الوظيفة format () الوسيطات التي تم تمريرها وتنسيقها وتضعها في السلسلة حيث تكون العناصر النائبة {} :
مثال
استخدام الوظيفة format () لإدراج الأرقام في السلاسل:
age = 36
txt = "My name is John, and I am {}"
print(txt.format(age))

ستكون النتيجة:
My name is John, and I am 36
جربها بنفسك مِن ملف string_format1.py

الوظيفة format() تأخذ عدد غير محدود من الوسائط، ويتم وضعها في العناصر النائبة المعنية:
مثال
quantity = 3
itemno = 567
price = 49.95
myorder = "I want {} pieces of item {} for {} dollars."
print(myorder.format(quantity, itemno, price))

ستكون النتيجة:
I want 3 pieces of item 567 for 49.95 dollars.
جربها بنفسك مِن ملف string_format2.py

يمكنك استخدام أرقام الفهرس (index numbers ) مثلا {0}للتأكد من وضع الوسيطات في العناصر النائبة الصحيحة:
مثال
quantity = 3
itemno = 567
price = 49.95
myorder = "I want to pay {2} dollars for {0} pieces of item {1}."
print(myorder.format(quantity, itemno, price))

ستكون النتيجة:
I want to pay 49.95 dollars for 3 pieces of item 567
جربها بنفسك مِن ملف string_format3.py

حرف التمرير(Escape Character)
لإدراج أحرف غير قانونية في سلسلة ، استخدم حرف التمرير.
حرف التمرير هو شرطة مائلة للخلف \متبوعة بالحرف الذي تريد إدراجه.
مثال على الحرف غير القانوني هو اقتباس مزدوج داخل سلسلة محاطة بعلامات اقتباس مزدوجة:
مثال
سوف تحصل على خطأ إذا كنت تستخدم علامات الاقتباس المزدوجة داخل سلسلة محاطة بعلامات اقتباس مزدوجة:
txt = "We are the so-called "Vikings" from the north."

ستكون النتيجة:
^
SyntaxError: invalid syntax
جربها بنفسك مِن ملف string_escape_error.py

لإصلاح هذه المشكلة ، استخدم حرف التمرير \":
مثال
يسمح لك حرف التمرير باستخدام علامات الاقتباس المزدوجة عندما لا يُسمح لك عادةً:
txt = "We are the so-called \"Vikings\" from the north."
print(txt)

ستكون النتيجة:
We are the so-called "Vikings" from the north.
جربها بنفسك مِن ملف string_escape.py

أحرف التمرير الأخرى المستخدمة في بايثون:
\'
Single Quote
مثال
txt = 'It\'s alright.'
print(txt)

ستكون النتيجة:
It's alright.
Try it » مِن ملف string_escape2.py

\\
Backslash
مثال
txt = "This will insert one \\ (backslash)."
print(txt)

ستكون النتيجة:
This will insert one \ (backslash).
Try it » مِن ملف string_backslash.py

\n
New Line
مثال
txt = "Hello\nWorld!"
print(txt)

ستكون النتيجة:
Hello
World!
Try it » مِن ملف string_newline.py

\r
Carriage Return
مثال
txt = "Hello\rWorld!"
print(txt)

ستكون النتيجة:
Hello
World!
Try it » مِن ملف string_r.py

\t
Tab
مثال
txt = "Hello\tWorld!"
print(txt)

ستكون النتيجة:
Hello World!
Try it » مِن ملف string_t.py

\b
Backspace
مثال
#This example erases one character (backspace):
txt = "Hello \bWorld!"
print(txt)

ستكون النتيجة:
HelloWorld!
Try it » مِن ملف string_b.py

\f
Form Feed

\ooo
Octal value
مثال
#A backslash followed by three integers will result in a octal value:
txt = "\110\145\154\154\157"
print(txt)

ستكون النتيجة:
Hello
Try it » مِن ملف string_octal.py

\xhh
Hex value
مثال
#A backslash followed by an 'x' and a hex number represents a hex value:
txt = "\x48\x65\x6c\x6c\x6f"
print(txt)

ستكون النتيجة:
Hello
Try it » مِن ملف string_hex.py

وظائف السلسلة النصِّيَّة(String Methods)
يحتوي Python على مجموعة من الوظائف المضَمَّنة التي يمكنك استخدامها في السلاسل.
ملاحظة: تقوم جميع وظائف السلسلة بإرجاع قيَم جديدة. إنها لا تُغير السلسلة الأصلية.
Method
Description
capitalize()
تقوم بتحويل الحرف الأول مِن السلسلة إلى حرف كبير
casefold()
تقوم بتحويل السلسلة إلى حالة الأحرف الصغيرة
center()
تقوم بإرجاع سلسلة مركزية(موجودة في الوسط)
count()
تقوم بإرجاع عدد المرات التي تتكرر فيها قيمة معينة في سلسلة
encode()
تقوم بإرجاع نسخة مشفرة من السلسلة
endswith()
تقوم بإرجاع true إذا انتهت السلسلة بالقيمة المحددة
expandtabs()
تقوم بتحديد حجم علامة التبويب في السلسلة
find()
تقوم بالبحث في السلسلة عن قيمة محددة وإرجاع موضع المكان الذي تم العثور عليها فيه
format()
تقوم بتنسيق أو إدراج القيم المحددة في سلسلة
format_map()
تقوم بتنسيق أو إدراج القيم المحددة في سلسلة
index()
تقوم بالبحث في السلسلة عن قيمة معينة وإرجاع موضع المكان الذي تم العثور عليها فيه
isalnum()
تقوم بإرجاع True إذا كانت جميع الأحرف في السلسلة أبجدية رقمية(alphanumeric)
isalpha()
تقوم بإرجاع True إذا كانت جميع الأحرف في السلسلة في الأبجدية(in the alphabet)
isdecimal()
تقوم بإرجاع True إذا كانت جميع الأحرف في السلسلة عشرية(decimals)
isdigit()
تقوم بإرجاع True إذا كانت جميع الأحرف في السلسلة هي أرقام
isidentifier()
تقوم بإرجاع True إذا كانت السلسلة هي identifier, أو تصلح لِأن تكون إسم لمتغير
islower()
تقوم بإرجاع True إذا كانت جميع الأحرف في السلسلة أحرف صغيرة
isnumeric()
تقوم بإرجاع True إذا كانت جميع الأحرف في السلسلة رقمية(numeric)
isprintable()
تقوم بإرجاع True إذا كانت جميع الأحرف في السلسلة قابلة للكتابة أو الطباعة
isspace()
تقوم بإرجاع True إذا كانت جميع الأحرف في السلسلة هي مساحات بيضاء(whitespaces)
istitle()
تقوم بإرجاع True إذا كانت السلسلة تتَّبع قواعد العنوان
isupper()
تقوم بإرجاع True إذا كانت جميع الأحرف في السلسلة هي أحرف كبيرة
join()
Joins the elements of an iterable to the end of the string
ljust()
تقوم بإرجاع نسخة محايدة إلى اليسار من السلسلة
lower()
تقوم بتحويل السلسلة إلى حالةْ الأحرف الصغيرة
lstrip()
تقوم بإرجاع نسخة محذوف منها أشياء مِن اليسار من السلسلة
maketrans()
تقوم بإرجاع جدول ترجمة لاستخدامه في الترجمة
partition()
تقومبإرجاع الصفوف (tuple) حيث يتم تقسيم السلسلة إلى ثلاثة أجزاء
replace()
تقوم بإرجاع سلسلة حيث يتم استبدال قيمة معينة بقيمة أُخرى معينة
rfind()
تقوم بالبحث في السلسلة عن قيمة محددة وإرجاع الموضع الأخير الذي تم العثور عليها فيه
rindex()
تقوم بالبحث في السلسلة عن قيمة محددة وإرجاع الموضع الأخير الذي تم العثور عليها فيه
rjust()
تقوم بإرجاع نسخة محايدة إلى اليمين من السلسلة
rpartition()
تبحث وظيفة rpartition () عن آخر تكرار لسلسلة محددة ، ويقسم السلسلة إلى مجموعة تحتوي على ثلاثة عناصر.
rsplit()
وظيفة rsplit () تقسم السلسلة إلى قائمة ، تبدأ من اليمين.
rstrip()
تقوم بإرجاع نسخة محذوف منها أشياء مِن اليمين من السلسلة
split()
تقوم بتقسيم السلسلة عند فاصل معين ، وإرجاع قائمة
splitlines()
تقوم بتقسيم السلسلة عند نهايةْ الأسطر وإرجاع قائمة
startswith()
تقوم بإرجاع true إذا بدأت السلسلة بالقيمة المحددة
strip()
تقوم بإرجاع نسخة محذوف منها أشياء من الأطراف من السلسلة
swapcase()
تبديل الحالات في السلسلة، تصبح الأحرف الصغيرة كبيرة والعكس بالعكس
title()
تقوم بتحويل الحرف الأول من كل كلمة إلى حرف كبير
translate()
تقوم بإرجاع سلسلة مترجمة(طبعا ليست الترجمة العادية التي نعرفها)
upper()
تقوم بتحويل السلسلة إلى حالة الأحرف الكبيرة
zfill()
تقوم بملء السلسلة بعدد محدد من الأصفار في البداية

اختبر نفسك مع التمارين
التمرين:
استخدم الوظيفة len لِطباعة طول السلسلة.
x = "Hello World"
print(...)

الإجابة :
print(len(x))

لِتنزيل الدرس مع الملفات المُرفقة:
https://www.dropbox.com/s/518grpmdlrfsirn/12Python%20Strings.zip?dl=1

Skip to content