برنامه نویس پایتون و دوستدار سیستم های توزیع شده، دانش داده ها و زبان عبری http://learnhebrew.ir
شیوه های گوناگون فرمت کردن رشته ها در پایتون
پایتون زبان برنامه نویسی با یادگیری ساده و کاربردهای فراوان و فراگیر است. در این نوشته می خواهیم شیوه های متفاوت فرمت کردن رشته های پایتون را آموزش دهیم. در پایتون تابعی به نام ()print است که یک خط را چاپ می کند. این تابع می تواند یک رشته را دریافت کند و سپس همان را در خروجی (خط فرمان - ترمینال) چاپ کند و یا اینکه می تواند نام یک متغیر را دریافت و سپس آن را نمایش دهیم و اینکه می خواهیم رشته ای را چاپ کنیم که ترکیبی از رشته ها و مقدار متغیرهایی درون این رشته باشد.
توجه کنید که انگیزه (هدف) از فرمت کردن رشته ها، آماده سازی یک رشته است، نه تنها برای نمایش در خط فرمان، بلکه می توانیم آن را درون یک Label یا ListView در GUI نشان دهیم، رشته آماده شده را در یک فایل یا ستونی از جدول پایگاه داده نگهداری کنیم و یا می توانیم آن را بر روی شبکه بفرستیم.
تازه ترین شیوه فرمت کردن رشته ها در پایتون، f-string است ولی پیش از آن می توانستیم از کاراکترهای فرمت مانند t\ (نمایش Tab) یا از متد ()format کمک بگیریم. در همه کدهای زیر، تنها متغیرهای رشته ای را آماده می کنیم ولی می توانید درون مایه این متغیرها را با ()print نشان دهید.
تا پیش از پایتون 3.6 دو روش به کارگیری کاراکترهای کنترلی یا شیوه formatting-% و متد ()str.format بودند. توجه کنید که str نام کلاسی در پایتون است که گونه (نوع) رشته با آن ساخته می شود. پس هر متغیری که دارای مقدار رشته ای است، پس نمونه (Instance) از این کلاس است، پس می توانیم به متدهای کلاس str مانند ()format یا ()split و ()replace بدست متغیر رشته ای دسترسی داشته باشیم.
شیوه یکم - formatting-%
name = "Python"
welcome_msg = "Hello %s", name
در کد بالا نخست متغیری رشته ای به نام name و سپس متغیر رشته ای دیگر ساختیم که مقدار متغیر name را به کمک کاراکتر فرمت s% درون رشته جایگذاری می کند. در برابر s%، برای نمونه کاراکتر فرمت d% برای شماره صحیح و f% برای ممیز شناور هست.
name = "Eric"
age = 74
msg = "Hello, %s. You are %d." % (name, age)
کاراکترهای t\ و n\ به ترتیب برای نمایش یک Tab و رفتن به خط تازه به کار می روند. s% و d% و f% نیز برای جایگذاری رشته، شماره صحیح و ممیز شناور به کار می روند.
شیوه دوم - ()str.format
زمانی که اندازه رشته بزرگ و شمار متغیرها زیاد باشد، پس شیوه یکم که گفتیم کمی ناخوانا می شود و از این رو کدها کثیف و خواندن آنها تا اندازه ای سخت می شود. برای این منظور شیوه بسیار بهتری است و آن به کار بردن متد ()format برای آماده سازی یک رشته است.
msg = "Hello, {}. You are {}....".format(name, age)
در کد بالا، دو متغیر به متد ()format فرستاده شده اند، پس در خود رشته، به همین اندازه آکولادهای باز و بسته {} خواهیم داشت.بنابراین شمار آکولادهای باز و بسته با شمار متغیرهای فرستاده شده به ()format یکسان است و در واقع به ترتیب از چپ به راست مقدار متغیرها جایگزین {} می
کد زیر شیوه خواناتری را نشان می دهد که در آن درون هر {} اندیس متغیر در متد ()format نشان داده شده است. سمت چپ ترین متغیر در ()format دارای اندیس 0 است. بنابراین در کد زیر متغیر name دارای اندیس 1 و متغیر age دارای اندیس 0 است.
msg = "Hello, {1}. You are {0}.".format(age, name)
در کد زیر نخست یک دیکشنری به نام person ساخته ایم و سپس هر کلید آن را به عنوان مقداری به متد ()format فرستاده ایم.
person = {'name': 'Eric', 'age': 74}
msg = "Hello, {name}. You are {age}.".format(name=person['name'], age=person['age'])
در کد زیر از ** برای جایگذاری مقدار هر کلید دیکشنری person کمک گرفته ایم. می بینید که مقدار همه کلیدهای بی آنکه نیازی به نشان دادن آشکارا باشد، در رشته جایگذاری می شوند.
person = {'name': 'Eric', 'age': 74}
"Hello, {name}. You are {age}.".format(**person)
شیوه سوم - f-string
شیوه f-string بسیار همانند ()str.format است ولی در اینجا، خود نام متغیر در میان آکولادهای {} و درون رشته سر راست جایگذاری می شود. این شیوه از پایتون 3.6 به ویژگی های پایتون افزوده شده است. برای ساخت رشته های f-string باید پیش از آغاز رشته، یک f نوشته شود. برای نمونه "f"This is a f-string شیوه ساخت یک f-string را نشان می دهد. کدهای زیر نشان می دهند که بزرگی کوچکی f یا F مهم نیست. همچنین می بنید که این بار نام خود متغیر درون آکولادهای {} نوشته شده اند.
msg = f"Hello, {name}. You are {age}."
msg = F"Hello, {name}. You are {age}."
در کد زیر یک لیست شامل سه زیر لیست درون آن را نوشته ایم و می خواهیم هر درایه درون لیست ها را با یک Tab از دیگری جدا کنیم. همچنین می خواهیم یک عنوان (Header) نیز بالای همه خط های خروجی نشان داده شود. درون رشته های ساخته و نمایش داده شده از کاراکتر t\ برای نمایش یک Tab و شیوه f-string کمک گرفته شده است.
همچنین به شیوه f-string می توانیم یک تابع را فراخوانی کنیم که در پایان مقدار برگشتی آن درون رشته جایگذاری می شود. کد زیر تابعی به نام ()first_char_to_upper نوشته ایم که حرف آغازینرشته را به بزرگ تبدیل می کند.
همانگونه که می بینید درون دستور ()print و در میان نخستین {}، تابع ()first_char_to_upper فراخوانی شده و ورودی آن یکمین المان هر کدامک از المان های لیست های درونی است که دارای اندیس شماره 0 هستند.
مطلبی دیگر از این انتشارات
شروعی دوباره!
مطلبی دیگر از این انتشارات
یادگیری برنامه نویسی، نوع داده ای در زبانهای مختلف
مطلبی دیگر از این انتشارات
مقدمه ای بر JUnit