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

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

فهرست مطالب

در پایتون، چندین روش برای ارائه خروجی برنامه وجود دارد. داده‌ها می‌توانند به صورت متون قابل خواندن برای انسان نمایش داده شوند، یا برای استفاده در آینده در یک فایل نوشته شوند، یا حتی به شکل های مشخص دیگری نمایش داده شوند.

در نتیجه کاربران اغلب می‌خواهند کنترل بیشتری روی فرمت‌بندی خروجی داشته باشند، یعنی به دنبال چیزی بیشتر از فقط چاپ کردن مقادیری که با فاصله از هم جدا شده اند، هستند. همانطور که متوجه شده اید در درس چهاردهم از آموزش رایگان پایتون در سایت دیتایاد می خواهیم در مورد فرمت بندی خروجی در پایتون صحبت کنیم.

 

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

چندین روش برای فرمت‌بندی خروجی با استفاده از متد رشته در پایتون وجود دارد.

  • استفاده از عملگر رشته ماژول (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 در رابطه با پارامترهای موقعیتی چگونه عمل می‌کند:

  چاپ خروجی در پایتون و بررسی دقیق دستور print

فرمت در پایتون

 

مثال 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

 

 

فرمت‌بندی خروجی با استفاده از متد رشته

در این حالت، خروجی با استفاده از متد رشته فرمت بندی می شود، مثلاً از طریق عملیات برش و ادغام رشته‌ها انجام می‌شود.

نوع رشته دارای متدهایی هست که در قالب‌بندی خروجی به شکل جالبی به ما کمک می‌کنند. برخی از متدهایی که در قالب‌بندی خروجی کمک می‌کنند، عبارتند از:  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

 

قانون تبدیل فرمت در پایتون

در جدول زیر راهنمای استفاده از “تبدیل فرمت استاندارد ” که توسط تابع 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 %

 

Rating 0.00 from 0 votes

لیست دروس دوره

آموزش پیشنهادی و مکمل

اگر سوالی در مورد این درس دارید، در کادر زیر بنویسید.

guest
0 نظرات
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها
سبد خرید

دوره جامع متخصص علم داده و یادگیری ماشین

برای دیدن نوشته هایی که دنبال آن هستید تایپ کنید.
×