English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
طريقة format() الخاصة بـ Python لتشكيل القيم المحددة وإدراجها في الفواصل المخصصة في النص.
يُستخدم المكان الحالي باستخدام accolades {}، يرجى الرجوع إلى قسم "المكان الحالي" للحصول على معلومات إضافية حول الملاكمة.
يستعيد طريقة format() النص المتنسيق.
نموذج طريقة format() هو:
template.format(p0, p1, ..., k0=v0, k1=v1, ...)
في هذا السياق، p0، p1،... هي معاملات موقعة وk0، k1،... هي معاملات كلمات مفتاحية تحتوي على قيم v0، v1،....
و، تمزج template من رموز النمط ومكامن التوضيح.
يأخذ طريقة format() عدد غير محدود من المعاملات. ولكن يتم تقسيمها إلى نوعين من المعاملات:
معاملات موقعة - يمكن الوصول إلى المعاملات باستخدام مؤشر المعامل في accolades {index}
معاملات كلمات مفتاحية - قائمة بالمعاملات من نوع "مفتاح=قيمة" يمكن الوصول إليها باستخدام مفتاح المعامل في accolades {key}
يستعيد طريقة format() النص المتنسيق.
يقرأ format() نوع المعاملات التي يتم تمريرها له، ويقوم بتنسيقها بناءً على رموز النمط المحددة في النص.
في هذا السياق، المعامل 0 هو النص "Adam"، المعامل 1 هو عدد عشري 230.2346.
ملاحظة: في Python، تبدأ قائمة المعاملات من 0.
النص "Hello {0}, your balance is {1:9.3f}" هو نموذج نصي. يحتوي على رموز نمط للاستخدام في الت-format.
المثلثات الهوائية هي مجرد ملاكمة للمعلومات التي سيتم وضعها. في المثال السابق، {0} هو ملاكمة "Adam"، {1:9.3f} هي ملاكمة 230.2346.
بسبب أن نماذج النصوص تشير إلى معاملات format() مثل {0} و {1}، لذا تكون هذه المعاملات معاملات موقعة. يمكن أيضًا تسميتها دون أرقام لأن {} وPython يقومون بتحويلها إلى أرقام داخليًا.
في الداخل،
بسبب أن "Adam" هو الرقم الـ0 عددالمعامل، لذا يتم وضعها في موقعه {0}. لأن {0} لا يحتوي على أي رموز نمط أخرى، لذا لا يقوم بأي عملية أخرى.
مع ذلك، فإن أول معامل 230.2346 ليس من هذا النوع. هنا، {1:9.3f} يضع 230.2346 في موقعه ويقوم بعملية 9.3f.
يُستخدم f لتحديد النمط الذي يتم معالجته كعدد عشري. إذا لم يتم تحديد بشكل صحيح، سيتم إصدار خطأ.
جزء من قبل “.”. أقل عرض ممكن/ملء للعدد المحدد (230.2346). في هذه الحالة، يتم تخصيص 230.2346 على الأقل 9 مواضع، بما في ذلك “.”.
إذا لم يتم تحديد خيار التوجيه، يتم توجيهه إلى اليمين من اليمين من المسافات الفارغة. (بالنسبة للنصوص، يتم توجيهها إلى اليسار.)
بعد النقطة (3) يتم قطع جزء العدد العشري (2346) إلى عدد محدد. في هذا الحالة، سيتم قطع 2346 بعد 3346.
سيتم تقريب الرقم المتبقي (46) إلى 235.
استخدمنا نفس المثال من فوق لعرض الفرق بين المعلمات المفتاحية والمعلمات المحددة بالموضع.
في هذا السياق، نستخدم ليس فقط المعلمات، بل أيضًا مفتاح القيمة كمعلمات. أي name="آدم" و blc=230.2346.
بسبب أن هذه المعلمات تُستدل إليها بواسطة مفتاحها كـ {name} و {blc:9.3f}، يتم تسميتها بـ المعلمات المفتاحية أو المعلمات المسماة.
في الداخل،
تم استبدال علامة الاستبدال {name} بالقيمة - "آدم". لأنها لا تحتوي على أي شيفرة تنسيق أخرى، تم وضع "آدم".
بالنسبة للمعلمة blc = 230.2346، يتم استبدال علامة الاستبدال {blc:9.3f} بالقيمة 230.2346. ولكن قبل استبداله، يتم تنفيذه 9.3f كما في مثال سابق.
الخروج 230.235. يتم قطع جزء العدد العشري بعد 3 أرقام، ويتم تقريب الباقي. كما يتم توزيع عرض النص على 9 أرقام، مع بقاء مسافة 2 من الفضاء في اليسار.
يسمح لـ format() باستخدام علامات الاستبدال البسيطة للتنسيق.
# معلمات افتراضية print("مرحبًا {}, رصيدك هو {}.".format("آدم"، 230.2346)) # معلمات مواضع print("مرحبًا {0}، رصيدك هو {1}.".format("آدم"، 230.2346)) # معلمات مفتاحية print("مرحبًا {name}، رصيدك هو {blc}.".format(name="آدم"، blc=230.2346)) # معلمات مختلطة print("مرحبًا {0}، رصيدك هو {blc}.".format("آدم"، blc=230.2346))
عند تشغيل هذا البرنامج، جميع الخروجات ستكون متشابهة:
مرحبًا، آدم، رصيدك هو 230.2346. مرحبًا، آدم، رصيدك هو 230.2346. مرحبًا، آدم، رصيدك هو 230.2346. مرحبًا، آدم، رصيدك هو 230.2346.
ملاحظة:بالنسبة للمعلمات المختلطة، يجب دائمًا أن يتبع المعلمات المحددة بالكلمات المفتاحية المعلمات المحددة بالمواضع.
يمكنك استخدام علامات التوثيق التالية لضبط تنسيق الرقم:
نوع | معنى |
---|---|
د | عدد عشري صحيح |
ك | حرف يوناني مرتبط به |
ب | نظام الت编码 الثنائي |
o | التنسيق الثماني |
x | التنسيق السداسي (صغير x) |
X | التنسيق السداسي (كبير X) |
n | مثل “d”. باستثناء استخدام علامة الفصل بين الأرقام في إعدادات اللغة المحلية الحالية |
e | التمثيل بالأساس (حرف صغير e) |
E | علامة الأساس (كبيرة E) |
f | الرقم الثابت (الافتراضية: 6) |
F | مثل “f”. باستثناء عرض “inf” كـ “INF” و “nan” كـ “NAN” |
g | التنسيق العام. قم بتقريب الرقم إلى p أرقام فعالة. (الدقة الافتراضية: 6) |
G | مثل “g”. إذا كان العدد كبيرًا، يتم التبديل إلى “E”. |
% | النسبة المئوية. ضعفها وأضف % في النهاية. |
# معامل الأعداد الصحيحة print("العدد: {:d}".format(123)) # معامل الأعداد العشرية print("الأعداد العشرية: {:f}".format(123.4567898)) # تنسيق ثنائي، عشري وثماني print("bin: {0:b}, oct: {0:o}, hex: {0:x}".format(12))
当你运行该程序时,输出将是:
العدد: 123 الأعداد العشرية: 123.456790 bin: 1100، oct: 14، hex: c
# أوسع مساحة صحيحة print("{:5d}".format(12)) # عرض لا يؤثر على الأعداد التي تكون أطول من التعبئة print("{:2d}".format(1234)) # تعبئة الأعداد العشرية print("{:8.3f}".format(12.2346)) # أوسع مساحة صفرية للأعداد الصحيحة print("{:05d}".format(12)) # تعبئة الأعداد العشرية باستخدام الصفر print("{:08.3f}".format(12.2346))
当你运行该程序时,输出将是:
121234 12.235000120012.235
هنا،
في الجملة الأولى،{:5d} يستخدم معامل صحيح ويحدد أوسع مساحة 5. لأنه لم يتم تحديد طريقة التوجيه، يتم توجيهه إلى اليمين.
في الجملة الثانية، يمكنك رؤية أن عرضه (2) أقل من الرقم (1234)، لذا لا يحتاج إلى ترك أي مساحة على اليسار، ولا يقوم بتقسيم الرقم.
مختلفة عن الأعداد الصحيحة، الأعداد العشرية تحتوي على جزء صحيح وجزء عشري. ويتم تعريف أوسع جزء كامل بما في ذلك “.” من كلا الجزأين.
في الجملة الثالثة،{:8.3f} تقوم بقطع جزء العدد العشري إلى 3 أرقام، وتقوم بتقريب الأرقام الأخيرة. كما أن هذا الرقم الآن هو 12.235، وعرضه الكلي هو 8، ويتم الاحتفاظ بـ 2 مكانًا على اليسار.
إذا كنت ترغب في تعبئة المناطق المتبقية بالأصفار، فضع الصفر قبل مبدأ معرفة النمط. إنه ينطبق على الأعداد الصحيحة والأعداد العشرية: {:05d} و {:08.3f}.
# عرض إشارة + print("{:+f} {:+f}".format(12.23, -12.23)) # عرض فقط إشارة - print("{:-f} {:-f}".format(12.23, -12.23)) # مسافة空 لعرض إشارة + print("{: f} {: f}".format(12.23, -12.23))
当你运行该程序时,输出将是:
+12.230000 -12.230000 12.230000 -12.230000 12.230000 -12.230000
عند تحديد عرض معين للأرقام، يستخدم العلامات < و & و ^ لتنسيق
نوع | معنى |
---|---|
< | تنسق الباقي يسار |
^ | تنسق الباقي مركزي |
> | تنسق الباقي إلى اليمين |
= | إجبار إشارة الإيجابية ( +) أو السلبية (-) على اليسار أقصى |
# عدد صحيح يمين print("{:5d}".format(12)) # عدد عشري مركزي print("{:^10.3f}".format(12.2346)) # عدد صحيح يسار، ملأ بالصفر print("{:<05d}".format(12)) # عدد عشري مركزي print("{:=8.3f}".format(-12.2346))
当你运行该程序时,输出将是:
12 12.235 12000- 12.235
ملاحظة:في المثال الثالث، قد يؤدي استخدام صفر الملء للعدد إلى مشكلة، حيث يعود المثال إلى 12000 بدلاً من 12.
كرقم، يمكنك استخدام format() لتنسيق النص بنفس الطريقة.
# نص ملأ بالطريقة اليسرى print("{:5}".format("cat")) # نص ملأ بالطريقة اليمنى print("{:>5}".format("cat")) # نص ملأ بالطريقة المركزية print("{:^5}".format("cat")) # نص ملأ بالطريقة المركزية # و * و * استخدم حرف الملء print("{:*^5}".format("cat"))
当你运行该程序时,输出将是:
cat cat cat *cat*
# 将字符串截断为3个字母 print("{:.3}".format("caterpillar")) # 将字符串截断为3个字母 # 和 填充 print("{:5.3}".format("caterpillar")) # 将字符串截断为3个字母, # 填充和中心对齐 print("{:^5.3}".format("caterpillar"))
当你运行该程序时,输出将是:
catcat cat
Python内部getattr()以“ .age”形式用于类成员。并且,它使用__getitem__()查找“[index]”形式的字典成员。
# define Person class class Person: age = 23 name = "Adam" # 格式化age print("{p.name}'年龄是 : {p.age}".format(p=Person()))
当你运行该程序时,输出将是:
Adam's 年龄是 : 23
在这里,Person对象作为关键字参数p传递。
在模板字符串中,分别使用.name和.age访问Person的name和age。
# 定义Person字典 person = {'age': 23, 'name': 'Adam'} # 格式化age print("{p[name]}'s age is: {p[age]}".format(p=person))
当你运行该程序时,输出将是:
Adam's age is: 23
与class类似,person字典作为关键字参数p传递。
在模板字符串中,分别使用[name]和[age]访问人员的name和age。
有一种更简单的方法可以使用Python格式化字典str.format(**mapping)。
# 定义Person字典 person = {'age': 23, 'name': 'Adam'} # 格式化age print("{name}'s age is: {age}".format(**person))
** 是格式参数(最小字段宽度)。
您还可以动态传递格式代码,例如精度,对齐,填充字符作为位置或关键字参数。
# 动态字符串格式模板 string = "{:{fill}{align}{width}}" # نقل كود التنسيق كمعامل print(string.format('cat', fill='*', align='^', width=5)) # قالب تنسيق نقدي ديناميكي num = '{:{align}{width}.{precision}f}" # نقل كود التنسيق كمعامل print(num.format(123.236, align='<', width=8, precision=2))
عند تشغيل هذا البرنامج،الإخراج يكون:
**cat**123.24
هنا،
في المثال الأول، "cat" هو المعامل الموضع. وبالمثل، fill='*'، align='^' و width=5 هي معاملات كلمات رئيسية.
في النص النمطي، هذه الكلمات الرئيسية ليست كعناصر نصية عادية للطباعة بل ككود تنسيق يتم استرجاعه كـ fill, align و width.
سيتم استبدال المعاملين بتنسيقهم المقابل، وسيتم تعيين النص "cat" بشكل مناسب.
بالمثل، في المثال الثاني، 123.236 هو معامل موقع، و align، width و precision يتم نقلها ككود تنسيق إلى النص النمطي.
يدعم format() خيارات تنسيق خاصة بالنوع، مثل تنسيق تاريخ الوقت وأعداد المركبة.
يتم استدعاء __format__() داخل format() من datetime، و format() يصل إلى خصائص المركب.
يمكنك بسهولة تعديل أي طريقة __format__() الخاصة بالعنصر لتنفيذ تنسيق مخصص.
import datetime # تنسيق تاريخ الوقت date = datetime.datetime.now() print("الوقت الحالي: {:%Y/%m/%d %H:%M:%S}".format(date)) # تنسيق الأعداد المركبة complexNumber = 1+2j print("جزء الحقيقي: {0.real} و جزء المجرد: {0.imag}".format(complexNumber)) # تعريف __format__() class Person: def __format__(self, format): if(format == 'age'): return '23' return 'None' print("عمر آدم هو: {:age}".format(Person()))
عند تشغيل هذا البرنامج،الإخراج يكون:
الوقت الحالي: 2020/04/17 14:33:02 جزء الحقيقي: 1.0 و الجزء المركب: 2.0 عمر آدم هو: 23
هنا،
بالنسبة لـ datetime:
التاريخ الحالي والوقت كمعامل نقل لـ method format().
وفي الداخل،يستخدم __format__،يمكن لـ format() الوصول إلى السنة،الشهر،اليوم،الساعة،الدقيقة والثانية.
بالنسبة للعدد المركب:
1 + 2j يتم تحويله داخليًا إلى عنصر ComplexNumber.
ثم زيارة خصائص real و imag،سيتم تكوين الرقم.
إعادة كتابة __format__
مثل datetime،يمكنك إعادة كتابة __format__ الخاص بك لتحقيق تكوين مخصص،عند الوصول إلى {age}،سيقوم التكوين بإرجاع العمر
يمكنك أيضًا استخدام وظائف __str__ و __repr__ للفئات،من خلال استخدام طريقة التعبير القصير لـ format().
مثل __format__،يمكنك بسهولة إعادة كتابة __str__ و __repr__ للفئات.
# __str__() و __repr__() بإختصار !r و !s print("Quotes: {0!r}،بدون أسئلة: {0!s}".format("cat")) # __str__() و __repr__() لتحقيق الفئة class Person: def __str__(self): return "STR" def __repr__(self): return "REPR" print("repr: {p!r}،str: {p!s}".format(p=Person()))
عند تشغيل هذا البرنامج،الإخراج يكون:
الأسئلة: 'cat'،بدون أسئلة: cat repr: REPR،str: STR