فرمتبندی خروجی در پایتون

فهرست مطالب
در پایتون، چندین روش برای ارائه خروجی برنامه وجود دارد. دادهها میتوانند به صورت متون قابل خواندن برای انسان نمایش داده شوند، یا برای استفاده در آینده در یک فایل نوشته شوند، یا حتی به شکل های مشخص دیگری نمایش داده شوند.
در نتیجه کاربران اغلب میخواهند کنترل بیشتری روی فرمتبندی خروجی داشته باشند، یعنی به دنبال چیزی بیشتر از فقط چاپ کردن مقادیری که با فاصله از هم جدا شده اند، هستند. همانطور که متوجه شده اید در درس چهاردهم از آموزش رایگان پایتون در سایت دیتایاد می خواهیم در مورد فرمت بندی خروجی در پایتون صحبت کنیم.
در برنامه نویسی با پایتون، نحوه نمایش خروجی به صورت خوانا و مرتب یکی از مهارتهای کلیدی است که هر توسعهدهنده باید به آن مسلط باشد. فرمتبندی صحیح خروجی نه تنها درک دادهها را برای کاربران آسانتر میکند، بلکه به بهبود تجربه کاربری و حرفهایتر شدن پروژهها کمک میکند. در این مقاله، ما به بررسی انواع قالب ها و فرمت های پرینت در پایتون میپردازیم و شما را با روشهای مختلف ترازبندی متن، فرمتبندی اعداد و مثالهای عملی آشنا میکنیم. اگر به دنبال یادگیری تکنیکهایی هستید که خروجیهای شما را جذابتر و منظمتر کنند، این مقاله برای شماست. برای اطلاعات بیشتر در مورد مهمترین کاربرد های پایتون، میتوانید به مقاله مرتبط در DataYad مراجعه کنید.
مقایسه روشهای مختلف فرمت بندی پرینت در پایتون
پیش از ورود به جزئیات، بیایید نگاهی به روشهای مختلف فرمت بندی خروجی در پایتون داشته باشیم. در جدول زیر، سه روش اصلی را مقایسه کردهایم:
روش | توضیح | مثال |
% operator | روش قدیمی برای فرمتبندی رشتهها | print(“Hello, %s” % name) |
str.format() | روش جدیدتر با قابلیتهای بیشتر | print(“Hello, {}”.format(name)) |
f-strings | روش مدرن و خوانا (از پایتون 3.6 به بعد) | print(f”Hello, {name}”) |
هر یک از این روشها کاربرد خاص خود را دارند، اما در این مقاله، تمرکز ما بیشتر بر روی انواع قالب ها و فرمت های پرینت در پایتون با استفاده از f-stringها خواهد بود، زیرا این روش به دلیل خوانایی و سرعت، محبوبیت بیشتری در میان توسعهدهندگان پیدا کرده است.
فرمت بندی اعداد در پایتون
فرمت بندی اعداد یکی دیگر از جنبههای کلیدی در نمایش خروجی است. پایتون ابزارهای متنوعی برای نمایش اعداد به شکلهای مختلف ارائه میدهد که در ادامه به آنها میپردازیم.
نمایش اعداد به صورت اعشاری (f:)
برای نمایش اعداد به صورت اعشاری با تعداد مشخصی رقم پس از اعشار، از مشخصه f استفاده میکنیم. این روش برای نمایش دقیق اعداد اعشاری بسیار مفید است.
مثال:
value = 3.14159 print(f"{value:.2f}")
خروجی:
3.14
در اینجا، عدد π تا دو رقم اعشار گرد شده است.
به نقل از GeeksforGeeks : “فرمت بندی اعشاری به شما امکان میدهد دقت نمایش اعداد را کنترل کنید.”
نمایش اعداد به صورت علمی (e:)
برای اعداد بسیار بزرگ یا کوچک، نمایش به صورت علمی با استفاده از مشخصه e مناسب است.
مثال:
large_number = 1234567890 print(f"{large_number:e}")
خروجی:
1.234568e+09
این روش یکی از انواع قالب ها و فرمت های پرینت در پایتون است که برای نمایش اعداد در مقیاسهای بزرگ کاربرد دارد.
نمایش اعداد به صورت هگزادسیمال (x:)
نمایش اعداد به صورت هگزادسیمال با مشخصه x انجام میشود و در برنامهنویسی سیستمی یا کار با دادههای باینری مفید است.
مثال:
number = 255 print(f"{number:x}")
خروجی:
ff
این فرمت به شما امکان میدهد اعداد را به شکلی که در سیستمهای کامپیوتری رایج است، نمایش دهید.
نمایش اعداد به صورت درصد (%:)
برای نمایش اعداد به صورت درصد، از مشخصه % استفاده میشود. این روش برای نمایش نسبتها یا آمار بسیار کاربردی است.
مثال:
ratio = 0.85 print(f"{ratio:.1%}")
خروجی:
85.0%
این یکی دیگر از انواع قالب ها و فرمت های پرینت در پایتون است که در گزارشدهی بسیار استفاده میشود.
فرمتبندی خروجی در پایتون
چندین روش برای فرمتبندی خروجی با استفاده از متد رشته در پایتون وجود دارد.
- استفاده از عملگر رشته ماژول (String Modulo Operator) (%)
- استفاده از متد فرمت (Format)
- استفاده از متد رشته (String Method)
- قانون تبدیل فرمت پایتون (Python’s Format Conversion Rule)
فرمتبندی خروجی با استفاده از عملگر رشته ماژول (%)
عملگر ماژول % همچنین میتواند برای فرمتبندی رشته استفاده شود. این عملگر، آرگومان چپ را به شکلی مشابه فرمت printf در زبان C میتواند تفسیر کند و به آرگومان راست اعمال کند. در پایتون تابع printf وجود ندارد، اما عملکرد printf قدیمی در پایتون وجود دارد. به این منظور، از عملگر ماژول % موجود در کلاس رشته برای انجام این نوع از فرمتبندی رشتهای استفاده میشود.
بنابراین، اغلب به عنوان عملگر ماژول رشته (و البته بسته به مورد استفاده، عملگر باقیمانده) شناخته میشود. عملگر ماژول رشته (%) هنوز در پایتون 3.x موجود است و به طور گستردهای استفاده میشود. اما در حال حاضر سبک قدیمی فرمتبندی از این زبان حذف شده است.
# Python program showing how to use string modulo operator(%) print("Geeks : %2d, Portal : %5.2f" % (1, 05.333)) print("Total students : %3d, Boys : %2d" % (240, 120)) # print integer value print("%7.3o" % (25)) # print octal value print("%10.3E" % (356.08977)) # print exponential value
خروجی:
Geeks : 1, Portal : 5.33 Total students : 240, Boys : 120 031 3.561E+02
در مثال ما دو placeholder (نگهدارنده مکان) وجود دارند: “2d%” و “5.2f%”.
سینتکس صحیح برای این نوع placeholder به صورت زیر است:
%[flags][width][.precision]type
بیایید نگاهی به این placeholder در این مثال بیندازیم.
- نگهدارنده مکان اول “2d%” برای جزء اول تاپل ما، یعنی عدد صحیح 1، استفاده میشود. این عدد با 2 کاراکتر چاپ میشود و چون عدد 1 تنها از یک رقم تشکیل شده است، خروجی با یک فضای خالی ابتدایی پر میشود.
- نگهدارنده مکان دوم “5.2f%” برای یک عدد اعشاری استفاده میشود. مانند مکاننگهدارندههای دیگر، با کاراکتر % معرفی میشود. این مکاننگهدارنده تعداد کل رقمهایی را که رشته باید شامل شود را مشخص میکند، و این شامل نقطه اعشار و تمام رقمها، هم قبل و هم بعد از نقطه اعشار میشود.
- عدد اعشاری 05.333 با استفاده از 5 کاراکتر و دقت 2، که با عدد بعد از ‘.’ در مکاننگهدارنده مشخص میشود، فرمت دهی میشود. کاراکتر آخر ‘f’ نشان میدهد که مکاننگهدارنده مقدار عدد اعشاری را نمایش میدهد.
فرمت بندی خروجی با استفاده از متد فرمت
متد format در پایتون 2.6 به بعد معرفی شده است. این متد به ما اجازه میدهد که خروجی را با استفاده از روشهای فرمتبندی رشتهها به صورت دستی بیشتر کنترل کنیم. کاربران از \{\} برای نشان دادن جایی که یک متغیر جایگزین خواهد شد استفاده میکنند و میتوانند دستورات دقیق فرمتبندی را ارائه دهند، اما کاربر باید اطلاعاتی که برای فرمت لازم هستند را ارائه دهد.
این متد به ما امکان ادغام عناصر در داخل یک خروجی از طریق فرمتبندی موقعیتی را میدهد.
مثال 1: این کد به توضیح روشهای مختلف فرمتبندی رشته در پایتون میپردازد. مقادیر متغیرها یا به صورت صریح اعلام میشوند، یا با ارجاع به ترتیب ظاهر شدن آنها در متد format، بدر زمان چاپ استفاده میشوند.
روش f-string (یا همان رشته f) این امکان را فراهم میکند که از پرانتزهای نمادین و پیشوند f برای جاسازی متغیرها در درون رشتههای ثابت استفاده کنیم. در این روش، متغیرهای f-Strings ارزیابی میشوند و مقادیر مربوطه به جای آنها جایگزین میشوند.
print('I love {} and its "{}!"'.format('datayad', 'website')) # using format() method and referring a position of the object print('{0} and {1}'.format('datayad', 'Portal')) print('{1} and {0}'.format('datayad', 'Portal')) print(f"I love {'datayad'} and its \"{'website'}!\"") # using format() method and referring a position of the object print(f"{'datayad'} and {'Portal'}")
خروجی:
I love datayad and its "website!" datayad and Portal Portal and datayad I love datayad and its "website!" datayad and Portal
پرانتزها و کاراکترهای درون آنها (که فیلدهای فرمت نامیده میشوند) با اشیاءی که به متد format منتقل شدهاند جایگزین میشوند. با استفاده از یک عدد در درون پرانتزها میتوان به موقعیت شیء منتقل شده در متد format اشاره کرد.
مثال 2: با استفاده از پارامترهای موقعیتی و یک آرگومان به نام ‘other’ در خط اول، مقادیر ‘Geeks’، ‘For’ و ‘Geeks’ به قالب رشته اضافه میشوند.
عبارات ‘Geeks:12، Portal: 0.55’ چاپ میشود.
البته در حالی که عبارت اول به عنوان یک عدد دو رقمی و مقدار دوم دارای دو رقم اعشار و یک عرض 8 بیتی خواهد بود. در ادامه نیز، آرگومانهای نامگذاری شده متد format که با برچسبهای مشخص (‘a’ و ‘p’) برای اعداد ‘453’ و ‘59.058’ چاپ میشوند.
# combining positional and keyword arguments print('Number one portal is {0}, {1}, and {other}.' .format('Geeks', 'For', other ='Geeks')) # using format() method with number print("Geeks :{0:2d}, Portal :{1:8.2f}". format(12, 00.546)) # Changing positional argument print("Second argument: {1:3d}, first one: {0:7.2f}". format(47.42, 11)) print("Geeks: {a:5d}, Portal: {p:8.2f}". format(a = 453, p = 59.058))
خروجی:
Number one portal is Geeks, For, and Geeks. Geeks :12, Portal : 0.55 Second argument: 11, first one: 47.42 Geeks: 453, Portal: 59.06
نمودار زیر با یک مثال نشان میدهد که متد format در رابطه با پارامترهای موقعیتی چگونه عمل میکند:
مثال 3: این کد نشان میدهد چگونه از دیکشنریها با متد format در پایتون استفاده کنیم. در اولین مثال، دیکشنری با نام tab کلیدها و مقادیر مرتبط با خودش را دارد. متد format با کمک ایندکسگذاری مقادیر را درون قالب رشته قرار میدهد. در مثال دوم، کلیدهای نامگذاری شده در یک دیکشنری به عنوان “data1” و “data2” استفاده شده است.
tab = {'datayad': 4127, 'for': 4098, 'all': 8637678} # using format() in dictionary print('datayad: {0[geeks]:d}; For: {0[for]:d}; ' 'all: {0[geek]:d}'.format(tab)) data = dict(fun ="datayad", adj ="Portal") print("I love {fun} computer {adj}".format(**data))
خروجی:
datayad: 4127; For: 4098; all: 8637678 I love datayad computer Portal
ترازبندی متن یکی از جنبههای مهم در ایجاد خروجیهای مرتب و حرفهای است. با استفاده از تکنیکهای ترازبندی، میتوانید متن را به چپ، راست یا مرکز یک فضای مشخص هدایت کنید. این قابلیت بهویژه در نمایش جدولها، گزارشها و رابطهای کاربری متنی بسیار کاربردی است.
ترازبندی به چپ (<:)
ترازبندی به چپ با استفاده از علامت < در f-stringها انجام میشود. این روش معمولاً برای ستونهایی که باید از سمت چپ شروع شوند، مانند نامها یا توضیحات، استفاده میشود.
مثال:
name = "Ali" print(f"{name:<10}")
خروجی:
Ali
در این مثال، کلمه “Ali” در یک فضای 10 کاراکتری به چپ تراز شده و فضای باقیمانده با فاصله پر شده است. این یکی از سادهترین انواع قالب ها و فرمت های پرینت در پایتون برای منظم کردن خروجی است.
ترازبندی به راست (>)
ترازبندی به راست با علامت > انجام میشود و برای اعداد یا مواردی که باید در سمت راست قرار گیرند، مانند مقادیر عددی در ستونها، بسیار مناسب است.
مثال:
number = 42 print(f"{number:>10}")
خروجی:
42
در اینجا، عدد 42 در یک فضای 10 کاراکتری به راست تراز شده است. این تکنیک در نمایش خروجیهای عددی یکی از پرکاربردترین انواع قالب ها و فرمت های پرینت در پایتون محسوب میشود.
ترازبندی به مرکز (^)
ترازبندی به مرکز با علامت ^ انجام میشود و برای عناوین یا مواردی که باید در وسط یک فضا قرار گیرند، ایدهآل است.
مثال:
title = "Python" print(f"{title:^10}")
خروجی:
Python
در این مثال، کلمه “Python” در یک فضای 10 کاراکتری به مرکز تراز شده و فضاهای خالی به طور مساوی در دو طرف آن قرار گرفتهاند. برای کسب اطلاعات بیشتر در مورد رشته ها در پایتون، میتوانید به مقاله مربوطه در DataYad سر بزنید.
فرمتبندی خروجی با استفاده از متد رشته
در این حالت، خروجی با استفاده از متد رشته فرمت بندی می شود، مثلاً از طریق عملیات برش و ادغام رشتهها انجام میشود.
نوع رشته دارای متدهایی هست که در قالببندی خروجی به شکل جالبی به ما کمک میکنند. برخی از متدهایی که در قالببندی خروجی کمک میکنند، عبارتند از: str.ljust ،str.rjust و str.center
cstr = "I love datayad" # Printing the center aligned string with fillchr print("Center aligned string with fillchr: ") print(cstr.center(40, '#')) # Printing the left aligned string with "-" padding print("The left aligned string is : ") print(cstr.ljust(40, '-')) # Printing the right aligned string with "-" padding print("The right aligned string is : ") print(cstr.rjust(40, '-'))
خروجی:
Center aligned string with fillchr: ##########I love datayad########## The left aligned string is : I love datayad-------------------- The right aligned string is : --------------------I love datayad
مثالهای عملی از فرمتبندی خروجی در پایتون
حال که با تکنیکهای ترازبندی و فرمتبندی آشنا شدیم، بیایید چند مثال عملی از انواع قالب ها و فرمت های پرینت در پایتون را بررسی کنیم.
مثال 1: نمایش جدول با ترازبندی
نمایش دادهها به صورت جدول یکی از رایجترین کاربردهای فرمتبندی است.
کد:
python CollapseWrapCopy print(f"{'نام':<10} {'سن':<5} {'شهر':<15}") print(f"{'سارا':<10} {22:<5} {'تهران':<15}") print(f"{'علی':<10} {28:<5} {'شیراز':<15}")
خروجی:
نام سن شهر سارا 22 تهران علی 28 شیراز
این مثال نشان میدهد که چگونه میتوان با استفاده از ترازبندی، یک جدول منظم ایجاد کرد.
مثال 2: نمایش چندین مقدار در یک print() بهصورت جداشده
برای نمایش چندین مقدار با جداکننده دلخواه، از پارامتر sep استفاده میکنیم.
کد:
numbers = [10, 20, 30, 40] print(*numbers, sep=" | ")
خروجی:
10 | 20 | 30 | 40
این تکنیک پاسخ به سوال “چگونه میتوان چندین مقدار را در یک print() بهصورت جداشده نمایش داد؟” است.
مثال 3: فرمت بندی پیچیده با f-string
f-string ها امکان ترکیب متغیرها و فرمتبندی را به سادگی فراهم میکنند.
کد:
Name = "مریم" Score = 95.567 Print") (f" {name} امتیازی برابر با {score:.1f} کسب کرد.
خروجی:
مریم امتیازی برابر با 95.6 کسب کرد.
برای یادگیری بیشتر، میتوانید به آموزش هوش مصنوعی با پایتون رایگان مراجعه کنید.
قانون تبدیل فرمت در پایتون
در جدول زیر راهنمای استفاده از “تبدیل فرمت استاندارد ” که توسط تابع format در پایتون استفاده میشود، آورده شده است.
Meaning | Conversion |
Decimal integer | d |
Binary format | b |
octal format | o |
Obsolete and equivalent to d | u |
Hexadecimal format | x or X |
Exponential notation | e or E |
Floating-point decimal | f or F |
General format | g or G |
Single Character | c |
String format(using repr()) | r |
String format(using str()) | s |
Percentage | % |
نتیجه گیری
فرمتبندی خروجی در پایتون یکی از ابزارهای قدرتمند و کاربردی است که به توسعهدهندگان این امکان را میدهد تا دادهها را به شکلی حرفهای، منظم و قابلفهم به نمایش درآورند. این قابلیت نه تنها به بهبود ارائه اطلاعات کمک میکند، بلکه میتواند تأثیر بسزایی در افزایش خوانایی کد و جذابیت بصری خروجیها داشته باشد. در این مقاله، شما با مجموعهای از تکنیکها و روشهای متنوع برای فرمتبندی خروجی در پایتون آشنا شدید که هر یک کاربرد خاص خود را در شرایط مختلف دارند.
اهمیت فرمتبندی خروجی زمانی بیشتر مشخص میشود که در پروژههای واقعی با حجم بالایی از دادهها یا نیاز به ارائه گزارشهای حرفهای مواجه میشوید. به عنوان مثال، در نمایش جداول داده، گزارشهای مالی یا رابطهای کاربری متنی، نحوه ارائه اطلاعات میتواند تفاوت بزرگی در درک مطلب و جلب توجه کاربران ایجاد کند. فرمتبندی مناسب نه تنها به نظم و ترتیب خروجیها کمک میکند، بلکه باعث میشود پروژههای شما حرفهایتر به نظر برسند و از نظر بصری برای کاربران جذابتر باشند. علاوه بر این، کدهایی که از این تکنیکها بهره میبرند، معمولاً خواناتر و قابلنگهداریتر هستند، زیرا ساختار مشخص و منظمی به نمایش دادهها میدهند. در این مقاله، با انواع قالب ها و فرمت های پرینت در پایتون از جمله ترازبندی متن و فرمتبندی اعداد آشنا شدید. استفاده از این تکنیکها میتواند کد شما را خواناتر و خروجیهایتان را جذابتر کند. امیدواریم این آموزش به شما در بهبود مهارتهایتان کمک کرده باشد. اگر میخواهید حرفهایتر با فرمتبندی و نمایش خروجی در پایتون کار کنید، آموزشهای رایگان ما را در DataYad ببینید!
سوالات متداول
1.بهترین روش برای نمایش جدولبندیشده در خروجی پایتون چیست؟
بهترین روش برای نمایش خروجی به صورت جدولبندیشده در پایتون، استفاده از f-stringها همراه با ترازبندی متن است. این روش ساده و سریع است و نیازی به نصب کتابخانههای اضافی ندارد. با استفاده از مشخصکنندههای تراز مانند < (تراز چپ)، > (تراز راست) و ^ (تراز وسط)، میتوانید ستونهای منظم و خوانا ایجاد کنید.
مثال:
print(f"{'نام':<10} {'سن':>5}") print(f"{'علی':<10} {28:>5}") print(f"{'سارا':<10} {22:>5}")
خروجی:
نام سن علی 28 سارا 22
در این مثال، ستون “نام” به سمت چپ و ستون “سن” به سمت راست تراز شده است تا جدولی مرتب ایجاد شود. اگر به جدولهای پیچیدهتر نیاز دارید، میتوانید از کتابخانههایی مثل tabulate یا pandas استفاده کنید، اما برای اکثر موارد ساده، f-stringها کافی هستند.
2.چگونه میتوان چندین مقدار را در یک print() بهصورت جداشده نمایش داد؟
برای نمایش چندین مقدار در یک تابع print() به صورت جدا شده، میتوانید از پارامتر sep استفاده کنید. این پارامتر به شما اجازه میدهد مشخص کنید که بین مقادیر چه رشتهای (مثل کاما، خط تیره یا فضای خالی) قرار گیرد.
مثال:
python print("علی", "سارا", "مریم", sep=", ")
خروجی:
text علی, سارا, مریم
اگر مقادیر در یک لیست یا تاپل باشند، میتوانید با استفاده از عملگر * آنها را باز کنید و به print() بفرستید:
مثال:
numbers = [10, 20, 30] print(*numbers, sep=" | ")
خروجی:
text CollapseWrapCopy 10 | 20 | 30
این روش انعطافپذیر است و به راحتی میتوانید جداکنندهها را تغییر دهید.
3. تفاوت بین format() و f-string در پایتون چیست؟
تفاوت اصلی بین متد format() و f-stringها در پایتون به شرح زیر است:
- f-stringها:
- از پایتون 3.6 به بعد در دسترس هستند.
- خواناتر و سریعتر هستند، زیرا متغیرها مستقیماً داخل رشته قرار میگیرند.
- امکان استفاده از عبارات پایتون (مثل {age + 1}) را دارند.
- به دلیل پردازش در زمان کامپایل، عملکرد بهتری دارند.
- متد format():
- با نسخههای قدیمیتر پایتون (از 2.6 به بعد) سازگار است.
- از placeholderها ({}) استفاده میکند و مقادیر را در متد format() مشخص میکند.
- انعطافپذیر است و از فرمتبندی پیشرفته پشتیبانی میکند، اما خوانایی کمتری نسبت به f-stringها دارد.
- پردازش در زمان اجرا انجام میشود که کمی کندتر است.
مثال:
name = "علی" # با format() print("سلام {}".format(name)) # با f-string print(f"سلام {name}")
خروجی (هر دو):
سلام علی
به طور کلی، اگر از پایتون 3.6 یا بالاتر استفاده میکنید، f-stringها به دلیل سادگی و سرعت توصیه میشوند. اما اگر نیاز به سازگاری با نسخههای قدیمیتر دارید، format() گزینه مناسبی است.