از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
تفاوت بین %s و %d در قالب بندی رشته پایتون
سرفصلهای مطلب
معرفی
قالب بندی رشته، به عبارت ساده، این است process ساخت یک رشته با قرار دادن برخی داده های خاص یا محاسبه شده در یک مکان نگهدار رشته. هنگامی که با خروجی های کاربر پسند، اشکال زدایی گزارش ها یا تولید متن پویا برای اهداف مختلف سر و کار دارید، این یک ابزار ضروری است.
پایتون راه های مختلفی برای قالب بندی رشته ها ارائه می دهد. سه روش اصلی قالب بندی به سبک قدیمی با استفاده از %
اپراتور، str.format()
روشی که در پایتون 2.6 به وجود آمد و مدرن ترین راه، رشته های f، در پایتون 3.6 معرفی شده است.
در حالی که f رشته ها و str.format()
به دلیل بیان و خوانایی آنها محبوبیت پیدا کرده است %
اپراتور یک روش اساسی باقی می ماند، به ویژه در پایگاه های کد قدیمی تر. درک کردن %s
و %d
، دو مشخص کننده قالب اساسی که با استفاده از %
عملگر، گامی مهم در تسلط بر قالب بندی رشته پایتون است.
در این مقاله، ما عمیقاً به این موضوع خواهیم پرداخت
%s
و%d
مشخصکنندههای قالب، تفاوتها، کاربردها و روش تعامل آنها با انواع دادهها را توضیح میدهد. در پایان این مقاله، شما درک کاملی از این جنبه های مهم قالب بندی رشته در پایتون خواهید داشت.
%s در مقابل %d: اصول اولیه
در پایتون، %
عملگر برای قالب بندی رشته ها استفاده می شود. آرگومان چپ را بسیار شبیه a تفسیر می کند printf
رشته فرمت -style به آرگومان مناسب اعمال می شود و به شما امکان می دهد رشته ها را به روش های مختلف قالب بندی کنید. دو مورد از متداولترین مشخصکنندههای فرمت مورد استفاده با %
اپراتور هستند %s
و %d
.
%s تعیین کننده فرمت
این %s
فرمت مشخص کننده یک مکان نگهدار برای a است رشته. این %s
specifier شی را با استفاده از str()
، به این معنی که لزوماً لازم نیست رشته باشد. این می تواند هر شی پایتون، مانند یک عدد یا حتی یک لیست باشد. پایتون به طور خودکار این اشیاء را به نمایش رشته آنها تبدیل می کند:
name = "Bob"
print("Hello, %s!" % name)
این به ما می دهد:
Hello, Bob!
%d تعیین کننده فرمت
از سوی دیگر، %d
فرمت مشخص کننده یک مکان نگهدار برای a است عدد صحیح اعشاری. این %d
مشخص کننده به یک عدد صحیح یا عددی نیاز دارد که می تواند بدون اتلاف به یک عدد صحیح تبدیل شود، مانند یک بولی:
age = 25
print("I am %d years old." % age)
این منجر به:
I am 25 years old.
زمان استفاده از %s
این %s
فرمت specifier یکی از همه کاره ترین در زرادخانه قالب بندی رشته پایتون است. همانطور که به طور ضمنی شی ارائه شده را با استفاده از عبارت به رشته تبدیل می کند str()
تابع، این مشخص کننده معمولاً زمانی استفاده می شود که نوع دقیق شی که باید در رشته تعبیه شود ناشناخته یا نامربوط.
توجه داشته باشید: وقتی از %s
فرمت مشخص کننده با یک شی غیر رشته ای در پایتون، the str()
تابع به طور ضمنی نامیده می شود روی آن شی را به نمایش رشته خود تبدیل کند. این به این معنی است که %s
می تواند برای قالب بندی هر شی، نه فقط رشته ها استفاده شود.
داده های متغیر
اگر داده های متغیری دارید که باید آنها را به صورت رشته نشان دهید، می توانید از آنها استفاده کنید %s
. این می تواند شامل نام کاربر، مسیر فایل یا هر اطلاعات دیگری باشد که می تواند به صورت متنی نمایش داده شود، به عنوان مثال:
username = "Bob"
print("Logged in user: %s" % username)
این به ما می دهد:
Logged in user: Bob
داده های غیر رشته ای
حتی اگر داده های شما رشته ای نباشد، همچنان می توانید استفاده کنید %s
. پایتون به طور خودکار داده ها را به نمایش رشته خود تبدیل می کند. مثلا اگر بخواهید print یک لیست به عنوان بخشی از یک رشته:
fruits = ("apple", "banana", "cherry")
print("Fruits: %s" % fruits)
این خروجی زیر را خواهد داشت:
Fruits: ('apple', 'banana', 'cherry')
توجه کنید که چگونه، از زمانی که آرایه کامل را رد کردیم، براکت ها، کاما و آپستروف ها را نیز چاپ می کند.
چندین نقطه داده
اگر می خواهید چندین قطعه داده را در یک رشته قالب بندی کنید، می توانید از چندین مورد استفاده کنید %s
مشخص کننده ها برای مطابقت با تعداد، باید چندین داده ارائه دهید %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
با یک عدد ممیز شناور منجر به a می شود TypeError
. اگر یک عدد ممیز شناور دارید، باید ابتدا آن را به یک عدد صحیح تبدیل کنید یا از یک فرمت مشخص کننده طراحی شده برای اعداد ممیز شناور استفاده کنید، مانند %f
یا %.2f
.
علاوه بر این، در حالی که %d
می تواند در اکثر موارد با استفاده از بولین ها را قالب بندی کند %s
با یک Boolean ممکن است هنگام چاپ خواناتر باشد True
یا False
بجای 1
یا 0
. بنابراین، هنگام تصمیم گیری، همیشه مورد استفاده خاص و نوع داده ای را که با آن کار می کنید در نظر بگیرید روی تعیین کننده فرمت
داده های عدد صحیح
اگر داده های اعداد صحیح مانند سن یا تعداد دارید، می توانید استفاده کنید %d
برای جاسازی آن در یک رشته:
age = 25
print("I am %d years old." % age)
اجرای این به این نتیجه می رسد:
I am 25 years old.
بولین ها
همچنین می توانید استفاده کنید %d
با بولین ها پایتون رفتار می کند True
مانند 1
و False
مانند 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.
اشتباهاتی که باید از آنها اجتناب کرد
قالب بندی رشته پایتون یک ویژگی قدرتمند است، اما مانند هر ابزار قدرتمند دیگری، استفاده صحیح از آن برای جلوگیری از اشکالات و حفظ خوانایی کدتان بسیار مهم است. در زیر برخی از رایج ترین مشکلاتی که باید هنگام استفاده از آنها اجتناب کنید ذکر شده است %s
و %d
.
تعیینکنندههای قالب نامتناسب
مطمئن شوید که از فرمت مشخص کننده صحیح برای نوع داده ای که با آن کار می کنید استفاده می کنید. استفاده کردن %d
با انواع غیر صحیح می تواند منجر به خطا در هنگام استفاده شود %s
با انواع عددی ممکن است کنترل مطلوبی بر فرمت خروجی به شما ندهد.
تعداد آرگومان ها نادرست است
هنگام استفاده از مشخص کننده های قالب چندگانه، مطمئن شوید که تعداد آرگومان های صحیح را ارائه می کنید. اگر تعداد مشخصکنندههای قالب در رشته با تعداد آرگومانهای ارائهشده مطابقت نداشته باشد، پایتون یک عدد را افزایش میدهد. TypeError
:
print("My name is %s and I am %d years old." % ("Bob"))
خروجی:
TypeError: not enough arguments for format string
استفاده نادرست از پرانتز
هنگام ارائه چندین آرگومان برای قالب بندی رشته، باید آنها را در یک تاپل قرار دهید. فراموش کردن پرانتز می تواند منجر به خطاهای گیج کننده شود:
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
یا %(key)d
برای تعیین کلید در فرهنگ لغت. فراموشی انجام این کار می تواند منجر به TypeError
یا 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)
مشاوره: هنگام استفاده از قالب بندی رشته در پایتون، وضوح کلید است. کد خود را به گونه ای بنویسید که برای دیگران قابل درک باشد و همیشه ورودی های خود را قبل از ارسال آنها به عملیات قالب بندی رشته اعتبارسنجی کنید.
نتیجه
درک تفاوت های ظریف قالب بندی رشته در پایتون می تواند به خوانایی کد شما و همچنین توانایی شما برای کار با انواع داده ها کمک کند. همانطور که دیدیم، %s
و %d
مشخصکنندههای قالب ابزارهای مفیدی برای ترکیب دادههای رشته و عدد صحیح به ترتیب در متن هستند.
%s
شی داده شده را با استفاده از عبارت به یک رشته تبدیل می کند str()
عملکرد، و آن را برای هر نوع داده ای همه کاره می کند، در حالی که %d
مخصوص اعداد صحیح است مهم است که از آنها به درستی استفاده کنید و از اشتباهات متداول خودداری کنید، مانند فرمت نامناسب مشخص کننده ها یا تعداد نادرست آرگومان ها.
در حالی که %
عملگر یک روش قالببندی رشته مفید است، پایتون تکنیکهای دیگری مانند f-strings، the str.format()
متد و رشته های الگو که هر کدام مزایای خاص خود را دارند. انتخاب روش قالب بندی رشته تا حد زیادی بستگی دارد روی نیازهای خاص و ترجیح شخصی شما
(برچسبها به ترجمه)# python
منتشر شده در 1402-12-31 15:33:06