وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

رشته های padding در پایتون

0 65
زمان لازم برای مطالعه: 6 دقیقه


معرفی

پر کردن رشته به اضافه کردن معمولاً کاراکترهای غیر آموزنده به یک رشته به یک یا هر دو انتهای آن اشاره دارد. این اغلب برای اهداف قالب‌بندی خروجی و هم‌ترازی انجام می‌شود، اما می‌تواند کاربردهای عملی مفیدی داشته باشد.

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

در این مقاله روش پد کردن رشته ها در پایتون را توضیح خواهیم داد.

بگویید، ما این سه لیست را داریم:

medicine1 = ('Morning', 'dispirine', '1 mg')
medicine2 = ('Noon', 'arinic', '2 mg')
medicine3 = ('Evening', 'Long_capsule_name', '32 mg')

ما می توانیم اینها را به یک رشته با استفاده از join() تابع:

print(str.join(' ', medicine1))
print(str.join(' ', medicine2))
print(str.join(' ', medicine3))

خروجی نسبتاً نامرتب را به ما می دهد:

Morning Dispirine 1 mg
Noon Arinic 2 mg
Evening Long_capsule_name 32 mg

برای مبارزه با این، می توانیم بنویسیم for/while حلقه‌ها و فاصله‌ها را به رشته‌ها اضافه کنید تا به طول معینی برسند، و مطمئن شوید که همه داده‌ها به درستی تراز شده‌اند تا بازرسی بصری آسانی داشته باشد. یا می‌توانیم از توابع داخلی استفاده کنیم که می‌توانند به همان هدف دست یابند.

توابعی که در این مقاله به آنها می پردازیم عبارتند از: ljust()، center()، rjust()، zfill() و format(). هر یک از این توابع را می توان برای افزودن تعداد معینی کاراکتر به هر دو انتهای رشته ها از جمله فاصله ها استفاده کرد.

انواع پد

قبل از اینکه نگاهی دقیق به عملکردهای ذکر شده در بالا بیندازیم، به انواع مختلف padding نگاهی خواهیم انداخت تا بتوانیم هنگام صحبت در مورد عملکردها به آنها اشاره کنیم.

بالشتک چپ

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

به عنوان مثال، شما باید 11 فایل را نام ببرید و هر یک از آنها با یک عدد از 1 تا 11 شروع می شود. اگر به سادگی شماره را در ابتدای فایل اضافه کنید، اکثر سیستم عامل ها فایل ها را به ترتیب زیر مرتب می کنند: 1، 10، 11، 2، و غیره روی.

این البته به دلیل قوانین مرتب‌سازی واژگانی اتفاق می‌افتد، اما بسته به اینکه فایل‌ها را با یک یا چند صفر اول نامگذاری کنید، می‌توانید از این موقعیت‌ها جلوگیری کنید. روی چند فایل را انتظار دارید، به عنوان مثال: 01، 02، 03

این را می توان با اضافه کردن موثر اعداد به سمت چپ با تعداد مناسب صفر، که ارزش اصلی آنها را حفظ می کند، به دست آورد.

این باعث می شود که رشته ها به سمت چپ توجیه شوند.

بالشتک مرکزی

این بدان معنی است که کاراکتر داده شده به اندازه یکسان به دو طرف رشته اضافه می شود تا زمانی که رشته جدید به طول داده شده برسد. استفاده از این به طور موثر رشته را در طول ارائه شده متمرکز می کند:

پیشنهاد می‌کنیم بخوانید:  راهنمای انواع داده های پایه در پایتون با مثال

این یک رشته معمولی است.

این یک رشته با لایه مرکزی است.

بالشتک سمت راست

padding سمت راست مشابه padding سمت چپ است – کاراکتر داده شده به انتهای رشته اضافه می شود تا زمانی که رشته به طول معینی برسد.

توابع پایتون برای رشته ها

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

توجه داشته باشید: در تمام توابع مورد انتظار a width یا len پارامتر، در صورتی که رشته اصلی طولانی تر از مقدار مشخص شده باشد width یا len کل رشته بدون تغییر حفظ خواهد شد. این می تواند اثر نامطلوبی داشته باشد که رشته های طولانی قالب بندی را خراب می کند، بنابراین هنگام انتخاب یک width ارزش، مطمئن شوید که طولانی ترین رشته خود یا یک مرز طول بالایی را در نظر گرفته اید.

ljust()

این ljust() تابع با افزودن بالشتک سمت راست یک رشته را به سمت چپ تراز می کند.

این ljust() تابع دو پارامتر می گیرد: width و fillchar. این width اجباری است و طول رشته را مشخص می کند بعد از اضافه کردن padding، در حالی که پارامتر دوم اختیاری است و نشان دهنده کاراکتر اضافه شده به رشته اصلی است.

مقدار پیش فرض a است فضا شخصیت، یعنی ' '. این گزینه بسیار خوبی برای استفاده در هنگام چاپ داده های جدول مانند است، مانند مثال ما در ابتدا:

medicine1 = ('Morning', 'Dispirine', '1 mg')
medicine2 = ('Noon', 'Arinic', '2 mg')
medicine3 = ('Evening', 'Long_capsule_name', '32 mg')

for medicine in (medicine1, medicine2, medicine3):
    for entry in medicine:
        print(entry.ljust(25), end='')
    print()

که خروجی را به ما می دهد:

Morning                  Dispirine                1 mg                     
Noon                     Arinic                   2 mg                     
Evening                  Long_capsule_name        32 mg 

مرکز ()

این center() تابع یک رشته را در مرکز مشخص شده تراز می کند width، با اضافه کردن بالشتک به طور مساوی به هر دو طرف. پارامترها مانند the هستند ljust() تابع، مورد نیاز width، و اختیاری است fillchar پارامتر:

list_of_strings = ("This can give us", "text that's center aligned", "within the specified width")

for s in list_of_strings:
    print(s.center(50, ' '))

خروجی:

                 This can give us                 
            text that's center aligned            
            within the specified width            

rjust()

مشابه دو تابع قبلی، rjust() با افزودن بالشتک به سمت چپ (شروع) رشته، رشته را به سمت راست تراز می کند.

مجدداً، پارامترها مورد نیاز هستند width و اختیاری fillchar. همانطور که قبلاً اشاره کردیم، این تابع هنگام نامگذاری فایل هایی که با اعداد شروع می شوند بسیار مفید است زیرا مرتب سازی بصری تر است:

list_of_names_original = ()
list_of_names_padded = ()

for n in range(1, 13):
    list_of_names_original.append(str(n) + "_name")
    list_of_names_padded.append(str(n).rjust(2, '0') + "_name")

print("Lexicographical sorting without padding:")
print(sorted(list_of_names_original))
print()

print("Lexicographical sorting with padding:")
print(sorted(list_of_names_padded))

اجرای این کد به ما می دهد:

Lexicographical sorting without padding:
('10_name', '11_name', '12_name', '1_name', '2_name', '3_name', '4_name', '5_name', '6_name', '7_name', '8_name', '9_name')

Lexicographical sorting with padding:
('01_name', '02_name', '03_name', '04_name', '05_name', '06_name', '07_name', '08_name', '09_name', '10_name', '11_name', '12_name')

zfill()

این zfill() عملکرد بسیار شبیه به استفاده است rjust() با صفر به عنوان کاراکتر مشخص شده. رشته داده شده را با صفر در سمت چپ قرار می دهد تا زمانی که رشته به طول مشخص شده برسد.

پیشنهاد می‌کنیم بخوانید:  شروع به کار با API ویکی پدیا پایتون

تنها تفاوت این است که اگر رشته ما با یک پلاس شروع شود(+) یا منهای(-) را علامت بزنید، بالشتک بعد از آن علامت شروع می شود:

neutral = '15'
positive = '+15'
negative = '-15'
length = 4

print(neutral.zfill(length))
print(positive.zfill(length+1))
print(negative.zfill(length+1))

این کار برای حفظ مقدار اصلی عدد انجام می شود در صورتی که رشته یک عدد باشد. اجرای این کد به ما می دهد:

0015
+0015
-0015

قالب ()

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

این رشته را پس از قالب بندی مقادیر مشخص شده و قرار دادن آنها در داخل متغیرهای رشته ای که با {}.

مکان‌دارها را می‌توان با نمایه‌های نام‌گذاری شده، شاخص‌های شماره‌دار یا حتی براکت‌های مجعد خالی شناسایی کرد. قبل از اینکه ببینیم چگونه می‌توانیم از این تابع برای افزودن بالشتک استفاده کنیم، یک مثال سریع از روش نگاه کردن این مکان‌ها:

print("Placeholders can given by {0}, or with {value}".format("adding a number", value="a named value"))
print("They can also be given {}, without adding a {} or {}".format("implicitly", "number", "name"))

که به ما می دهد:

Placeholders can given by adding a number, or with a named value
They can also be given implicitly, without adding a number or name

این متغیرها انواع گزینه های قالب بندی را می پذیرند. بیایید ببینیم چگونه می‌توانیم با استفاده از این گزینه‌ها به انواع مختلف لایه‌بندی رشته دست پیدا کنیم:

  • بالشتک چپ: استفاده کنید > در داخل مکان نگهدار و یک عدد برای تعیین عرض مورد نظر، برای تراز کردن یک رشته به راست (کاراکترها را در شروع اضافه کنید):

    txt = "We {:>8} Python."
    print(txt.format('love'))
    

    که به ما می دهد:

    We     love Python.
    
  • لایه مرکزی: به همین ترتیب می توانیم استفاده کنیم ^ برای لایه بندی و تراز مرکزی:

    txt = "We {:^8} Python."
    print(txt.format('love')) 
    
    We   love   Python.
    
  • بالشتک سمت راست: استفاده کنید < در داخل متغیرهایی برای تراز چپ یک رشته:

    txt = "We {:<8} Python."
    print(txt.format('love')) 
    
    We love     Python.
    

همچنین می توانید با اضافه کردن کاراکترهای مشخص شده قبل از علامت، کاراکترهایی غیر از فاصله سفید اضافه کنید >، ^ یا < شخصیت:

print('{:*^50}'.format('Center padding with a specific character'))
*****Center padding with a specific character*****

شما می توانید در مورد امکانات مختلف آن بیشتر بخوانید format() تابع در راهنمای قالب‌بندی رشته‌ها با پایتون.

نتیجه

افزودن padding به رشته‌ها در پایتون کار نسبتاً ساده‌ای است process که می تواند خوانایی خروجی شما را به میزان قابل توجهی افزایش دهد، به خصوص اگر داده های شما را بتوان به شکل جدولی خواند.

در این مقاله به این موضوع پرداخته ایم ljust()، rjust()، center()، zfill() و format() به عنوان رویکردهای داخلی برای لایه بندی رشته ها در پایتون عمل می کند.

(برچسب‌ها به ترجمه)# python



منتشر شده در 1403-01-16 05:48:04

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید