تنسيق النصوص في Python: شرح % Operator و str.format() و f-strings و Template Strings

دقائق القراءة: 5

مقدمة إلى تنسيق النصوص في Python

تُعد عملية تنسيق النصوص من المهارات الأساسية التي يحتاجها أي مطور يعمل بلغة Python، لأنها تساعد على بناء رسائل واضحة، وعرض البيانات بشكل منظم، ودمج المتغيرات داخل النصوص بسهولة. توفر Python أكثر من أسلوب لإنجاز هذه المهمة، بدءاً من الطريقة التقليدية باستخدام % operator، مروراً بالدالة str.format()، ووصولاً إلى f-strings الحديثة، بالإضافة إلى Template strings.

في هذا الدليل، ستتعرف على الفروقات بين هذه الأساليب، ومتى يُفضّل استخدام كل واحدة منها، مع أمثلة عملية تسهّل الفهم وتساعدك على كتابة كود أوضح وأكثر احترافية.

شرح تنسيق النصوص في Python باستخدام str.format و f-strings مع أمثلة برمجية عملية

الطريقة التقليدية لتنسيق النصوص باستخدام % Operator

قبل ظهور الأساليب الأحدث في Python 3، كان % operator من أشهر الطرق المستخدمة لإدراج القيم داخل النصوص. يعتمد هذا الأسلوب على استخدام محددات مثل %s كعناصر نائبة placeholders داخل السلسلة النصية، ثم تمرير القيمة الفعلية بعد العامل %.

الصيغة الأساسية

"This is a string %s" % "string value goes here"

في المثال السابق، يعمل %s كمكان مخصص لاستقبال قيمة نصية يتم تمريرها لاحقاً.

مثال عملي

print("Hi, my name is %s" % "Jessica")

مثال على تنسيق النصوص في Python باستخدام %s داخل print

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

استخدام str.format() في Python

تُعتبر الدالة str.format() من الطرق الشائعة والمنظمة لتنسيق النصوص. وهي تتيح لك استخدام أقواس معقوفة {} كأماكن نائبة، ثم تمرير القيم داخل .format().

الصيغة الأساسية

"template string {}".format(arguments)

تمثل الأقواس {} حقول التنسيق format fields التي سيتم استبدالها بالقيم الممررة.

مثال مباشر على str.format()

print("Hello, my name is {}. I am a {} turned {}.".format("Jessica", "musician", "programmer"))

مثال على استخدام str.format في Python لإدراج عدة قيم داخل نص واحد

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

الوسائط الموضعية Positional Arguments في str.format()

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

مثال على الترتيب المباشر

print("Steve plays {0} and {1}.".format("trumpet", "drums"))

تنسيق النصوص في Python باستخدام positional arguments داخل str.format

تبديل ترتيب العناصر بسهولة

print("Steve plays {1} and {0}.".format("trumpet", "drums"))

مثال على تغيير ترتيب الوسائط الموضعية في str.format داخل Python

الميزة هنا أنك تستطيع إعادة ترتيب القيم دون الحاجة إلى تغيير مواقعها عند تمريرها داخل .format().

الوسائط المسماة Keyword Arguments في str.format()

إذا كنت تفضّل كتابة كود أوضح وأسهل قراءة، فإن keyword arguments خيار ممتاز. في هذا الأسلوب، يتم تمرير القيم على هيئة أزواج key=value، ثم يتم استدعاء المفتاح نفسه داخل النص.

مثال تطبيقي

print("{organization} is {adjective}!".format(organization="freeCodeCamp", adjective="awesome"))

مثال على استخدام keyword arguments مع str.format في Python

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

دمج Positional Arguments و Keyword Arguments

من ميزات str.format() أيضاً إمكانية الدمج بين الوسائط الموضعية والوسائط المسماة في المثال نفسه. هذا يتيح لك قدراً عالياً من المرونة عند بناء النصوص المعقدة.

مثال عملي كامل

name = "Sam"
adjective = "amazing"
number = 200
disney_ride = "Space Mountain"

print(
    "I went to {0} with {name}.\nIt was {adjective}.\nWe waited for {hours} hours to ride {ride}.".format(
        "Disneyland", name=name, adjective=adjective, hours=number, ride=disney_ride
    )
)

مثال على دمج positional و keyword arguments في تنسيق النصوص بلغة Python

لاحظ استخدام \n لإضافة سطر جديد بعد كل جملة، وهي طريقة شائعة لتحسين تنسيق الإخراج النصي في الطرفية أو السجل.

ما هي f-strings في Python؟

تُعد formatted string literals أو ما يُعرف اختصاراً بـ f-strings من أفضل وأسهل طرق تنسيق النصوص في Python الحديثة. تسمح لك هذه الطريقة بإدراج المتغيرات وحتى التعبيرات مباشرة داخل النص، مع الحفاظ على صياغة نظيفة وسهلة القراءة.

الصيغة الأساسية

variable = "some value"
f"this is a string {variable}"

كل ما عليك فعله هو وضع الحرف f أو F قبل بداية السلسلة النصية.

مثال بسيط على f-strings

name = "Jessica"
print(f"Maria and {name} have been friends since grade school.")
name = "Jessica"
print(F"Maria and {name} have been friends since grade school.")

مثال على استخدام f-strings في Python لإدراج المتغيرات داخل النصوص

يُفضّل كثير من المطورين f-strings لأنها مختصرة وواضحة، وتقلل من التعقيد مقارنة ببعض الأساليب الأخرى.

تنسيق القواميس باستخدام f-strings

لا يقتصر استخدام f-strings على المتغيرات البسيطة فقط، بل يمكن توظيفها أيضاً لعرض بيانات أكثر تنظيماً، مثل البيانات المخزنة داخل dictionary.

مثال على طباعة بيانات dictionary بتنسيق أعمدة

rankings = {
    "Gonzaga": 31,
    "Baylor": 28,
    "Michigan": 25,
    "Illinois": 24,
    "Houston": 21
}

for team, score in rankings.items():
    print(f"{team:10} ==> {score:10d}")

تنسيق مخرجات القاموس في Python باستخدام f-strings ومحاذاة الأعمدة

في هذا المثال:

  • {team:10} يعني تخصيص حقل بعرض 10 أحرف لاسم الفريق.
  • {score:10d} يعني تخصيص حقل بعرض 10 خانات لقيمة عددية صحيحة من النوع العشري decimal integer.

هذا النوع من التنسيق مفيد جداً عند عرض الجداول النصية أو تنظيم نتائج الطباعة في سطر الأوامر.

ما هي Template Strings في Python؟

توفر Template strings أسلوباً آخر لتنسيق النصوص باستخدام عناصر نائبة تبدأ بالرمز $. وغالباً ما يكون هذا الأسلوب مناسباً في بعض السيناريوهات التي تحتاج إلى قوالب بسيطة وواضحة.

الصيغة الأساسية

Template("$placeholder").substitute(placeholder="real value")

استخدام Template بعد الاستيراد

قبل استخدام Template، يجب استيرادها من مكتبة string القياسية:

from string import Template

مثال عملي كامل

from string import Template

print(Template("I love to learn with $name!").substitute(name="freeCodeCamp"))

مثال على Template strings في Python باستخدام substitute لإدراج القيم

تعتمد الفكرة هنا على إنشاء قالب نصي، ثم استبدال العناصر النائبة بالقيم الحقيقية عبر .substitute().

مقارنة سريعة بين أشهر طرق تنسيق النصوص في Python

الأسلوب مستوى الحداثة سهولة القراءة الاستخدام الأنسب
% operator قديم متوسطة صيانة الأكواد القديمة
str.format() حديث نسبياً جيدة التحكم في الترتيب والأسماء
f-strings الأحدث والأكثر شيوعاً ممتازة الاستخدام اليومي وكتابة كود واضح
Template strings مفيد في حالات محددة جيدة القوالب البسيطة والبدائل الآمنة

متى تستخدم كل أسلوب؟

  • استخدم % operator إذا كنت تتعامل مع كود قديم وتحتاج إلى فهمه أو صيانته.
  • استخدم str.format() عندما تحتاج إلى مرونة في ترتيب الوسائط أو تسمية القيم بشكل واضح.
  • استخدم f-strings في معظم المشاريع الحديثة، لأنها الأسرع قراءة والأبسط كتابة.
  • استخدم Template strings عندما تعمل مع قوالب نصية بسيطة أو ترغب في أسلوب استبدال مباشر وسهل.

الخلاصة التقنية

تدعم Python عدة أساليب فعالة لتنسيق النصوص، لكن الخيار الأفضل في المشاريع الحديثة غالباً هو f-strings لما توفره من وضوح وسرعة ومرونة. مع ذلك، تبقى str.format() مناسبة في بعض الحالات التي تتطلب إعادة ترتيب القيم أو العمل مع قوالب أكثر تنظيماً، بينما يظل % operator مهماً لفهم الأكواد القديمة. أما Template strings فهي حل عملي عندما تحتاج إلى قوالب نصية بسيطة ومباشرة. اختيار الأسلوب المناسب يجب أن يعتمد على قابلية قراءة الكود، وسهولة صيانته، وطبيعة المشروع نفسه.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *