fbpx

تعلم لغة بايثون – الدرس السادس التعامل مع النصوص String in Python

0

السلاسل ( النصوص ) عبارة عن أجزاء من النص. يمكن تعريفها على أنها أي شيء بين الاقتباسات:

مثال طباعة جملة بسطة Hello world :

astring = "Hello world!"
astring2 = 'Hello world!'

كما ترى ، كان أول شيء تعلمته هو طباعة جملة بسيطة. تم تخزين هذه الجملة بواسطة Python كسلسلة.

ومع ذلك ، بدلاً من طباعة السلاسل على الفور ، سوف نستكشف الأشياء المختلفة التي يمكنك القيام بها. يمكنك أيضًا استخدام علامات الاقتباس المفردة لتعيين سلسلة. ومع ذلك ، ستواجه مشاكل إذا كانت القيمة التي سيتم تعيينها نفسها تحتوي على علامات اقتباس مفردة، على سبيل المثال لتعيين السلسلة في هذه الأقواس (علامات الاقتباس المفردة هي ”) ، تحتاج إلى استخدام علامات اقتباس مزدوجة مثل هذه، مثال :

astring = "Hello world!"
print("single quotes are ' '")

print(len(astring))

سنحصل على النتيجة التالية عند التشغيل

single quotes are ' '
12

هذا يطبع 12 ، لأن “hello world” يتألف من 12 حرفًا ، بما في ذلك علامات الترقيم والمسافات.

مثال

astring = "Hello world!"
print(astring.index("o"))

سنحصل على النتيجة التالية عند تشغيل الحل

4

هذا يطبع 4 ، لأن موقع التواجد الأول للحرف “o” يبعد 4 أحرف عن الحرف الأول. لاحظ كيف يوجد فعلاً حرفان في العبارة – هذه الطريقة تتعرف على الأولى فقط.

ولكن لماذا لم تطبع 5؟ أليس الحرف “o” الخامس في السلسلة؟ لجعل الأمور أكثر بساطة ، يبدأ Python (ومعظم لغات البرمجة الأخرى) في 0 بدلاً من 1. وبالتالي فإن مؤشر “o” هو 4

مثال

astring = "Hello world!"
print(astring.count("l"))

سنحصل على النتيجة التالية عند تشغيل الحل

3

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

مثال

astring = "Hello world!"
print(astring[3:7])

سنحصل على النتيجة التالية عند تشغيل الحل

lo w

هذا يطبع شريحة من السلسلة ، تبدأ من الفهرس 3 وتنتهي في الفهرس 6. ولكن لماذا 6 وليس 7؟ مرة أخرى ، معظم لغات البرمجة تفعل ذلك – إنها تجعل القيام بالرياضيات داخل تلك الأقواس أسهل.

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

يمكنك حتى وضع أرقام سلبية داخل الأقواس. إنها طريقة سهلة للبدء في نهاية السلسلة بدلاً من البداية. بهذه الطريقة ، تعني -3 “الحرف الثالث من النهاية”.

مثال

astring = "Hello world!"
print(astring[3:7:2])

سنحصل على النتيجة التالية عند تشغيل الحل

l 

هذا يطبع أحرف السلسلة من 3 إلى 7 تخطي حرف واحد. هذه صيغة شريحة ممتدة. النموذج العام هو [start: stop: step].

مثال

astring = "Hello world!"
print(astring[3:7])
print(astring[3:7:1])

سنحصل على النتيجة التالية عند تشغيل الحل

lo w
lo w

لا توجد اي وظيفة مثل strrev في C لعكس سلسلة. ولكن مع النوع المذكور أعلاه من بناء الجملة يمكنك بسهولة عكس سلسلة مثل هذه

مثال

astring = "Hello world!"
print(astring[::-1])

سنحصل على النتيجة التالية عند تشغيل الحل

!dlrow olleH

مثال

astring = "Hello world!"
print(astring.upper())
print(astring.lower())

سنحصل على النتيجة التالية عند تشغيل الحل

HELLO WORLD!
hello world!

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

مثال

astring = "Hello world!"
print(astring.startswith("Hello"))
print(astring.endswith("asdfasdfasdf"))

سنحصل على النتيجة التالية عند تشغيل الحل

True
False

يستخدم هذا لتحديد ما إذا كانت السلسلة تبدأ بشيء أو تنتهي بشيء ، على التوالي. الأولى ستطبع True ، حيث تبدأ السلسلة بـ “Hello”. الثاني سيطبع False ، لأن السلسلة بالتأكيد لا تنتهي بـ “asdfasdfasdf”.

مثال

astring = "Hello world!"
afewwords = astring.split(" ")

يؤدي ذلك إلى تقسيم السلسلة إلى مجموعة من السلاسل المجمعة معًا في قائمة. نظرًا لأن هذا المثال ينقسم إلى مسافة ، فإن العنصر الأول في القائمة سيكون “Hello” ، والثاني سيكون “world!”

تمرين

حاول إصلاح الرمز لطباعة المعلومات الصحيحة عن طريق تغيير السلسلة.

s = "Hey there! what should this string be?"
# يجب أن يكون الطول 20
print("Length of s = %d" % len(s))

# يجب أن يكون أول ظهور لـ "a" في الفهرس 8
print("The first occurrence of the letter a = %d" % s.index("a"))

# يجب أن يكون رقم a 2
print("a occurs %d times" % s.count("a"))

# تقطيع السلسلة إلى أجزاء
print("The first five characters are '%s'" % s[:5]) # ابدأ بـ 5
print("The next five characters are '%s'" % s[5:10]) # ابدأ بـ 5
print("The thirteenth character is '%s'" % s[12]) # فقط رقم 12
print("The characters with odd index are '%s'" %s[1::2]) #(الفهرسة القائمة على 0)
print("The last five characters are '%s'" % s[-5:]) #من الخامس إلى الأخير

# تحويل كل شيء إلى أحرف كبيرة
0print("String in uppercase: %s" % s.upper())

# تحويل كل شيء إلى أحرف صغيرة
print("String in lowercase: %s" % s.lower())

# تحقق من كيفية بدء السلسلة
if s.startswith("Str"):
    print("String starts with 'Str'. Good!")

# تحقق من كيفية انتهاء السلسلة
if s.endswith("ome!"):
    print("String ends with 'ome!'. Good!")

# تقسيم السلسلة إلى ثلاث سلاسل منفصلة ،
# يحتوي كل منها على كلمة واحدة فقط
print("Split the words of the string: %s" % s.split(" "))

الحل

s = "Strings are awesome!"
# Length should be 20
print("Length of s = %d" % len(s))

# First occurrence of "a" should be at index 8
print("The first occurrence of the letter a = %d" % s.index("a"))

# Number of a's should be 2
print("a occurs %d times" % s.count("a"))

# Slicing the string into bits
print("The first five characters are '%s'" % s[:5]) # Start to 5
print("The next five characters are '%s'" % s[5:10]) # 5 to 10
print("The thirteenth character is '%s'" % s[12]) # Just number 12
print("The characters with odd index are '%s'" %s[1::2]) #(0-based indexing)
print("The last five characters are '%s'" % s[-5:]) # 5th-from-last to end

# تحويل كل شيء إلى أحرف كبيرة
print("String in uppercase: %s" % s.upper())

# تحويل كل شيء إلى أحرف صغيرة
print("String in lowercase: %s" % s.lower())

# تحقق من كيفية بدء السلسلة
if s.startswith("Str"):
    print("String starts with 'Str'. Good!")

# تحقق من كيفية انتهاء السلسلة
if s.endswith("ome!"):
    print("String ends with 'ome!'. Good!")

# تقسيم السلسلة إلى ثلاث سلاسل منفصلة ،
# يحتوي كل منها على كلمة واحدة فقط
print("Split the words of the string: %s" % s.split(" "))

سنحصل على النتيجة التالية عند تشغيل الحل

<script.py> output:
    Length of s = 38
    The first occurrence of the letter a = 13
    a occurs 1 times
    The first five characters are 'Hey t'
    The next five characters are 'here!'
    The thirteenth character is 'h'
    The characters with odd index are 'e hr!wa hudti tigb?'
    The last five characters are 'g be?'
    String in uppercase: HEY THERE! WHAT SHOULD THIS STRING BE?
    String in lowercase: hey there! what should this string be?
    Split the words of the string: ['Hey', 'there!', 'what', 'should', 'this', 'string', 'be?']

الدرس السابع

اترك رد

لن يتم نشر عنوان بريدك الإلكتروني.