مقدمة
يُعدّ دمج السلاسل النصية عملية شائعة جدًا في البرمجة. ويمكن دمج السلاسل النصية في بايثون باستخدام طرق متنوعة. يهدف هذا الدرس إلى استكشاف الطرق المختلفة لدمج السلاسل النصية في برنامج بايثون.
دمج السلاسل النصية باستخدام عامل الجمع (+)
هذه أبسط طريقة لدمج السلاسل النصية. لنلقِ نظرة على مثال بسيط.
s1 = 'Apple'
s2 = 'Pie'
s3 = 'Sauce'
s4 = s1 + s2 + s3
print(s4)المخرجات: صلصة فطيرة التفاح لنلق نظرة على مثال آخر حيث نتلقى سلسلتين نصيتين من مدخلات المستخدم ونقوم بدمجهما.
s1 = input('Please enter the first string:\n')
s2 = input('Please enter the second string:\n')
print('Concatenated String =', s1 + s2)المخرجات:
Please enter the first string:
Hello
Please enter the second string:
World
Concatenated String = HelloWorldمن السهل جدًا استخدام عامل الجمع (+) لدمج السلاسل النصية. ومع ذلك، يجب أن تكون الوسائط سلسلة نصية.
>>>'Hello' + 4
Traceback (most recent call last):
File "<input>", line 1, in
TypeError: can only concatenate str (not "int") to strيمكننا استخدام الدالة str() للحصول على التمثيل النصي للكائن. دعونا نرى كيف ندمج سلسلة نصية مع عدد صحيح أو كائن آخر.
print('Hello' + str(4))
class Data:
id = 0
def __init__(self, i):
self.id = i
def __str__(self):
return 'Data[' + str(self.id) + ']'
print('Hello ' + str(Data(10)))المخرجات:
Hello4
Hello Data[10]تكمن المشكلة الأكبر في عامل الجمع (+) في عدم إمكانية إضافة فاصل أو محدد بين السلاسل النصية. على سبيل المثال، إذا أردنا دمج "Hello" و"World" مع فاصل مسافة بيضاء، فسنحتاج إلى كتابتها على النحو التالي: ""مرحباً" + " " + "العالم"" هيا نكتب.
دمج السلاسل النصية باستخدام الدالة join()
يمكننا استخدام الدالة join() لدمج السلاسل النصية باستخدام فاصل. يُفيد هذا عند وجود سلسلة من السلاسل النصية، مثل قائمة أو عدة سلاسل نصية. إذا كنت لا ترغب في استخدام فاصل، فاستخدم الدالة join() مع سلسلة نصية فارغة.
s1 = 'Hello'
s2 = 'World'
print('Concatenated String using join() =', "".join([s1, s2]))
print('Concatenated String using join() and whitespaces =', " ".join([s1, s2]))المخرجات:
Concatenated String using join() = HelloWorld
Concatenated String using join() and spaces = Hello Worldقم بدمج السلاسل النصية باستخدام عامل التشغيل %
يمكننا استخدام عامل التشغيل % لتنسيق السلاسل النصية، كما يمكن استخدامه لدمج السلاسل النصية. وهو مفيد عندما نريد دمج السلاسل النصية وإجراء تنسيق بسيط.
s1 = 'Hello'
s2 = 'World'
s3 = "%s %s" % (s1, s2)
print('String Concatenation using % Operator =', s3)
s3 = "%s %s from JournalDev - %d" % (s1, s2, 2018)
print('String Concatenation using % Operator with Formatting =', s3)المخرجات:
String Concatenation using % Operator = Hello World
String Concatenation using % Operator with Formatting = Hello World from JournalDev - 2018قم بدمج السلاسل النصية باستخدام الدالة format()
يمكننا أيضًا استخدام دالة تنسيق السلسلة النصية () لدمج السلاسل النصية وتنسيقها.
s1 = 'Hello'
s2 = 'World'
s3 = "{}-{}".format(s1, s2)
print('String Concatenation using format() =', s3)
s3 = "{in1} {in2}".format(in1=s1, in2=s2)
print('String Concatenation using format() =', s3)المخرجات:
String Concatenation using format() = Hello-World
String Concatenation using format() = Hello Worldتُعد دالة التنسيق () في بايثون String قوية للغاية، واستخدامها فقط لدمج السلاسل النصية ليس الاستخدام الصحيح لها.
دمج السلاسل النصية باستخدام السلسلة النصية f
إذا كنت تستخدم بايثون 3.6 أو أحدث، يمكنك أيضًا استخدام f-string لدمج السلاسل النصية. هذه طريقة جديدة لتنسيق السلاسل النصية، وقد تم تقديمها في PEP 498 - دمج السلاسل النصية الحرفية.
s1 = 'Hello'
s2 = 'World'
s3 = f'{s1} {s2}'
print('String Concatenation using f-string =', s3)
name = 'Pankaj'
age = 34
d = Data(10)
print(f'{name} age is {age} and d={d}')المخرجات:
String Concatenation using f-string = Hello World
Pankaj age is 34 and d=Data[10]تُعدّ دالة f string في بايثون أكثر وضوحًا وسهولة في الكتابة من دالة format(). كما أنها تستدعي دالة str() عند استخدام وسيط الكائن كبديل للحقل.
نتيجة
يمكن تنسيق السلاسل النصية في بايثون بطرقٍ متعددة. استخدمها حسب احتياجاتك. إذا كنت ترغب في دمج سلسلة من السلاسل النصية باستخدام فاصل، فاستخدم الدالة join(). أما إذا كنت بحاجة إلى تنسيق إضافي مع عملية الدمج، فاستخدم الدالة format() أو f-string. لاحظ أن f-string متوافقة مع إصدارات بايثون 3.6 والإصدارات الأحدث.









