ترفند پایتونی 5 – String Formatting
تا به الان در پایتون 4 روش برای ایجاد و فرمت رشته های متنی وجود داره! تعداد زیادیه و قراره به بررسی این روش ها بپردازیم. بذارید با یک مثال کمی روشن تر کنم که قراره چی رو استفاده کنیم؟ و چه استفاده ای ازش داشته باشیم؟ فرض کنید دو متغیر با نام ها و مقادیر زیر وجود داره. یکی errorno که شماره خطا رو به ما نشون میده و name هم که نام دلخواه و مورد نظر ما و شما…
1 2 3 4 |
errno = 50159747054 name = 'Developer' خروجی مورد نظر : 'Hey Developer, there is a 0xbadc0ffee error!' |
1- روش قدیمی، استفاده از % (String Formatting Operator)
فرم کلی این روش به صورت زیر:
1 |
%[key][flags][width][.precision][length type]conversion type % values |
همه بخش ها اختیاری هستند به غیره Conversion Type و صد البته کاراکتر %. رایج ترین فرمت های مورد استفاده عبارتند از :
- d% : اعداد صحیح
- f% : اعداد اعشاری (شناور)
- %f. : مشخص کردن تعداد اعشار مثلا %3f. تعداد سه رقم اعشار رو نشون میده
- x% : تبدیل عدد صحیح به hex
- s% : نمایش هر object به صورت متن (تبدیل مقادیر به str)
برای مطالعه بیشتر به documentation مراجعه کنید.
برای بخش اول مثال، از s% استفاده می کنیم تا مقدار متغیر name رو جایگزین s% کنیم. به صورت زیر :
1 |
print('Hello, %s' % name) #Hello, Developer! |
و بخش دوم تبدیل مقدار عدد صحیح errno به فرمت hex :
1 |
print('%x' % errno) #badc0ffee |
و خروجی برابر خواهد بود با : badc0ffee
پس در نتیجه :
1 |
print('Hey %s, there is a 0x%x error!' % (name, errno)) #Hey Developer, there is a 0xbadc0ffee error! |
خروجی مد نظر یعنی Hey Developer, there is a 0xbadc0ffee error! رو خواهیم داشت البته یه روش دیگه هم استفاده از mapping و dict هستش.
1 |
print('Hey %(name)s, there is a 0x%(errno)x error!' % {"name": name, "errno": errno }) |
2- روش جدیدتر، format
روش جدیدتر و البته تلفیق شده با روش قبل که کد رو خواناتر می کنه استفاده از تابع format هستش به این صورت :
1 |
print( 'Hello, {}'.format(name)) |
1 |
print('Hey {name}, there is a 0x{errno:x} error!'.format(name=name, errno=errno)) |
که x: همون کار تبدیل به hex رو انجام میده. می تونید کد بالا رو به صورت زیر هم بنویسید که نه نیازی به قسمت ابتدایی فرمت hex نخواهد بود و نه الزامی برای نام گذاری دارید :
1 |
print('Hey {0}, there is a {1} error!'.format(name, hex(errno))) |
اعداد 0 و 1 نوشتنشون الزامی نیست فقط برای خواناتر کردن کد نشوته شدن ولی اگر می نویسید حتما از صفر و به ترتیب باید بنویسید.
3- استفاده از f یا Literal String Interpolation
این روش از پایتون 3.6 اضافه شده. در این روش در ابتدای رشته متنی از یک f استفاده می کنیم. مزیت این روش اینه که اجازه میده تا فرمت رو داخل رشته متنی بنویسید.
1 |
print(f'Hello, {name}!') |
و یا حتی محاسبات رو در دل متن انجام بدید.
1 2 3 |
a = 5 b = 10 print(f'Five plus ten is {a + b} and not {2 * (a + b)}.') |
و در نهایت کد مثال آغازین :
1 |
print(f'Hey {name}, there is a {errno:#x} error!') |
4- استفاده از Template Strings
و روش آخر که با نوشتن یک الگو مقادیر رو درون template قرار می دهیم.
1 2 3 |
from string import Template templ_string = 'Hey $name, there is a $error error!' Template(templ_string).substitute(name=name, error=hex(errno)) |
مطالب جدید
دستهها
- Books (۱۲)
- Excel (۲)
- اکسل به زبان مثال …! (۹)
- ترفند های پایتونی (۶)
- هوش تجاری (۴۸)
- Power BI (۳۶)
- DAX (۱۳)
- Power Query (۹)
- SQL (۸)
- SSIS (۲)
- Power BI (۳۶)
- یادگیری ماشین (۸)
- ML Algorithm (۲)
- kNN (۲)
- pandas (۵)
- ML Algorithm (۲)
بایگانی
آمار بازدید
- ۰
- ۰
- ۵۲
- ۴۳,۶۲۱
- ۲۷ اردیبهشت, ۱۴۰۳