شعار زيفيرنت

الفرق بين٪ s و٪ d في تنسيق Python String

التاريخ:

المُقدّمة

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

تقدم Python طرقًا متعددة لتنسيق السلاسل. الطرق الثلاثة الأساسية هي تنسيق النمط القديم باستخدام امتداد % المشغل ، و str.format() التي ظهرت في Python 2.6 و الطريقة الأكثر حداثة ، f-strings، تم تقديمه في Python 3.6.

بينما و السلاسل و str.format() اكتسب شعبية بسبب تعبيرها وسهولة قراءتها ، و % يبقى العامل طريقة أساسية ، لا سيما في قواعد الرموز الأقدم. فهم %s و %d، اثنين من محددات التنسيق الأساسية المستخدمة مع % عامل التشغيل ، خطوة حاسمة في إتقان تنسيق سلسلة Python.

في هذه المقالة ، سوف نتعمق في ملف %s و %d محددات التنسيق ، وشرح الاختلافات والاستخدامات وكيفية تفاعلها مع أنواع البيانات المختلفة. بنهاية هذه المقالة ، سيكون لديك فهم قوي لهذه الجوانب الحاسمة لتنسيق السلسلة في Python.

%s vs %d: أساسيات

في Python ، فإن ملف % عامل التشغيل يستخدم لتنسيق السلسلة. إنه يفسر الحجة اليسرى مثل أ printf- سلسلة تنسيق على غرار ليتم تطبيقها على الوسيطة الصحيحة ، مما يسمح لك بتنسيق السلاسل بعدة طرق. اثنان من أكثر محددات التنسيق شيوعًا المستخدمة مع امتداد % المشغل %s و %d.

%s محدد التنسيق

%s محدد التنسيق هو عنصر نائب لملف سلسلة. %s المحدد يحول الكائن باستخدام str()، مما يعني أنه لا يلزم بالضرورة أن يكون سلسلة. يمكن أن يكون أي كائن Python ، مثل رقم أو حتى قائمة. ستقوم Python تلقائيًا بتحويل هذه الكائنات إلى تمثيل سلسلة لها:

name = "Bob"
print("Hello, %s!" % name)

هذا سوف يعطينا:

Hello, Bob!

%d محدد التنسيق

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

age = 25
print("I am %d years old." % age)

سيؤدي هذا إلى:

I am 25 years old.

متى يجب استخدام٪ s

%s محدد التنسيق هو واحد من الأكثر تنوعًا في ترسانة تنسيق سلسلة Python. لأنه يحول بشكل ضمني الكائن المقدم إلى سلسلة باستخدام str() وظيفة ، يتم استخدام هذا المحدد بشكل شائع عندما يكون النوع الدقيق للكائن المراد تضمينه في السلسلة هو غير معروف أو غير ذي صلة.

ملحوظة: عند استخدام %s محدد التنسيق مع كائن غير سلسلة في Python ، ملف str() يتم استدعاء الوظيفة ضمنيًا على هذا الكائن لتحويله إلى تمثيل سلسلة. هذا يعني ذاك %s يمكن استخدامها لتنسيق أي كائن ، وليس فقط سلاسل.

بيانات متغيرة

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

username = "Bob"
print("Logged in user: %s" % username)

هذا سوف ينتج لنا:

Logged in user: Bob

البيانات غير المتسلسلة

حتى لو لم تكن بياناتك سلسلة ، فلا يزال بإمكانك استخدام %s. ستقوم Python تلقائيًا بتحويل البيانات إلى تمثيل سلسلتها. على سبيل المثال ، إذا كنت تريد طباعة قائمة كجزء من سلسلة:

fruits = ["apple", "banana", "cherry"]
print("Fruits: %s" % fruits)

سينتج هذا ما يلي:

Fruits: ['apple', 'banana', 'cherry']

لاحظ كيف ، منذ أن مررنا المصفوفة الكاملة ، تطبع الأقواس والفواصل والفواصل العليا أيضًا.

نقاط بيانات متعددة

إذا كنت تريد تنسيق أجزاء متعددة من البيانات في سلسلة ، فيمكنك استخدام ملفات متعددة %s محددات. ستحتاج إلى تقديم ملف الصفوف (tuple) من البيانات لتتناسب مع عدد %s محددات:

username = "Bob"
access_level = "Admin"
print("User: %s, Access Level: %s" % (username, access_level))

هذا سيضع username و access_level بالترتيب الصحيح في سلسلة الإخراج:

User: Bob, Access Level: Admin

تذكر: بينما %s متعدد الاستخدامات ويتعامل مع أنواع البيانات المختلفة بأمان ، ضع في اعتبارك دائمًا ما إذا كان الخيار الأنسب بناءً على نوع البيانات وحالة الاستخدام المحددة. في بعض الحالات ، يكون استخدام محدد تنسيق أكثر تحديدًا (مثل %d للأعداد الصحيحة أو %.2f لأرقام الفاصلة العائمة ذات منزلتين عشريتين) يمكن أن توفر مزيدًا من التحكم في تنسيق الإخراج الخاص بك.

متى يجب استخدام٪ d

%d يتم استخدام محدد التنسيق عندما تريد تضمين عدد صحيح في سلسلة. يتعامل مع الوسيطة على أنها عدد صحيح عشري (أساس 10) ويمكن أن تكون أداة موثوقة عند التعامل مع البيانات الرقمية في تنسيق السلسلة.

ملحوظة: بينما %d هي أداة ممتازة لدمج الأعداد الصحيحة في سلاسل ، من المهم ملاحظة أنها لا تقوم تلقائيًا بتحويل الأنواع غير الصحيحة. على سبيل المثال ، باستخدام %d برقم الفاصلة العائمة سينتج عنه TypeError. إذا كان لديك رقم فاصلة عائمة ، فستحتاج إلى تحويله إلى عدد صحيح أولاً ، أو استخدام محدد تنسيق مصمم لأرقام الفاصلة العائمة ، مثل %f or %.2f.

علاوة على ذلك ، في حين %d يمكن تنسيق القيم المنطقية ، في معظم الحالات ، باستخدام %s باستخدام منطقي قد يكون أكثر قابلية للقراءة أثناء الطباعة True or False بدلا من 1 or 0. لذلك ، ضع في اعتبارك دائمًا حالة الاستخدام المحددة ونوع البيانات الذي تتعامل معه عند اتخاذ قرار بشأن محدد التنسيق.

عدد صحيح البيانات

إذا كانت لديك بيانات عدد صحيح ، مثل العمر أو العدد ، فيمكنك استخدام %d لتضمينها في سلسلة:

age = 25
print("I am %d years old." % age)

تحقق من دليلنا العملي العملي لتعلم Git ، مع أفضل الممارسات ، والمعايير المقبولة في الصناعة ، وورقة الغش المضمنة. توقف عن أوامر Googling Git وفي الواقع تعلم ذلك!

سيؤدي تشغيل هذا إلى:

I am 25 years old.

القيم المنطقية

يمكنك أيضا استخدام %d مع منطقية. يعامل بايثون True as 1 و False as 0:

print("True is %d" % True)
print("False is %d" % False)

كما هو متوقع ، سيعطينا هذا:

True is 1
False is 0

نقاط بيانات صحيحة متعددة

إذا كنت تتعامل مع عدة نقاط بيانات صحيحة ، فيمكنك استخدام عدة نقاط %d المحددات وتوفر مجموعة بالقيم المقابلة:

height = 180
weight = 75
print("My height is %d cm and my weight is %d kg." % (height, weight))

مما يؤدي إلى:

My height is 180 cm and my weight is 75 kg.

أخطاء لتجنب

يعد تنسيق سلسلة Python ميزة قوية ، ولكن كما هو الحال مع أي أداة قوية ، من المهم استخدامها بشكل صحيح لتجنب الأخطاء والحفاظ على قابلية قراءة التعليمات البرمجية الخاصة بك. فيما يلي قائمة ببعض المخاطر الأكثر شيوعًا التي يجب تجنبها عند الاستخدام %s و %d.

محددات التنسيق غير متطابقة

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

عدد الحجج غير صحيح

عند استخدام محددات تنسيق متعددة ، تأكد من توفير العدد الصحيح من الوسائط. إذا كان عدد محددات التنسيق في السلسلة لا يتطابق مع عدد الوسائط المقدمة ، فسيقوم Python برفع ملف TypeError:

print("My name is %s and I am %d years old." % ("Bob"))

الإخراج:

TypeError: not enough arguments for format string

استخدام غير صحيح للأقواس

عند تقديم وسيطات متعددة لتنسيق السلسلة ، تحتاج إلى وضعها في tuple. قد يؤدي نسيان الأقواس إلى حدوث أخطاء محيرة:

print("My name is %s and I am %d years old." % "Bob", 25)

سيؤدي هذا إلى الخطأ التالي:

TypeError: not all arguments converted during string formatting

قم بتصحيحه بإضافة أقواس:

print("My name is %s and I am %d years old." % ("Bob", 25))

باستخدام % مع القواميس

عند استخدام % عامل مع قواميس ، تذكر أن تستخدم %(key)s or %(key)d لتحديد المفتاح في القاموس. نسيان القيام بذلك يمكن أن يؤدي إلى TypeError or KeyError:

data = {"name": "Bob", "age": 25}
print("My name is %s and I am %d years old." % data)

الإخراج:

TypeError: not enough arguments for format string

قم بتصحيحه بإضافة المفاتيح:

data = {"name": "Bob", "age": 25}
print("My name is %(name)s and I am %(age)d years old." % data)

المشورة: عند استخدام تنسيق السلسلة في Python ، الوضوح هو المفتاح. اكتب الكود الخاص بك بطريقة يسهل على الآخرين فهمها ، وتحقق دائمًا من صحة مدخلاتك قبل تمريرها إلى عملية تنسيق السلسلة.

وفي الختام

يمكن أن يساعد فهم الفروق الدقيقة في تنسيق السلسلة في Python في سهولة قراءة كودك ، بالإضافة إلى قدرتك على العمل مع أنواع البيانات المختلفة. كما رأينا ، فإن %s و %d محددات التنسيق هي أدوات مفيدة لدمج بيانات السلسلة والأعداد الصحيحة في النص ، على التوالي.

%s يحول الكائن المحدد إلى سلسلة باستخدام str() وظيفة ، مما يجعلها متعددة الاستخدامات لأي نوع بيانات ، بينما %d خاص بالأعداد الصحيحة. من المهم استخدامها بشكل مناسب وتجنب الأخطاء الشائعة ، مثل محددات التنسيق غير المتطابقة أو عدد غير صحيح من الوسائط.

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

بقعة_صورة

أحدث المعلومات الاستخباراتية

بقعة_صورة