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

سرور مجازی NVMe

تبدیل رشته به حروف کوچک در پایتون

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


معرفی

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

در این مقاله به شما نشان خواهیم داد که چگونه با استفاده از یکی از روش های داخلی پایتون که برای دستکاری رشته ها استفاده می شود، متن را به حروف کوچک تبدیل کنید – str.lower().

از دیدگاه سطح بالا، process از طریق:

exampleString = "AbCdF_1@3$"
lowercaseString = exampleString.lower()
print(lowercaseString) 

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

روش تبدیل رشته به حروف کوچک در پایتون

تبدیل رشته ها به حروف کوچک برای اجرا در پایتون بسیار ساده است. str.lower() روش داخلی است که به طور خاص برای این منظور ساخته شده است. این به عنوان یک روش تعریف شده است String نوع که در فضای نام پایتون تعبیه شده است.

توجه داشته باشید: هر نوع داخلی پایتون مجموعه ای از روش هایی را برای انجام عملیات طراحی کرده است روی آن نوع خاص به عنوان مثال String type دارای روش های از پیش تعریف شده ای برای حذف فضاهای سفید پیشرو و انتهایی، یافتن و جایگزینی رشته های فرعی، تقسیم رشته ها به آرایه ها و غیره است. یکی از این روش ها این است. str.lower().
هر روشی که برای String نوع دارد str پیشوند با نام آن در مستندات. این نشان می دهد که همه آنها نامیده می شوند روی نمونه های رشته ای

این str.lower() متد یک کپی کوچک از رشته را برمی گرداند روی که به آن می گویند. این می تواند مفید باشد وقتی می خواهید رشته اصلی را برای استفاده بعدی ذخیره کنید. حال ، بیایید ببینیم چگونه یک رشته را به حروف کوچک در پایتون تبدیل کنیم.

بیایید فرض کنیم که شما مقداری رشته ای دارید که می خواهید تبدیل کنید:

exampleString = "AbCdF_1@3$"

همانطور که مشاهده می کنید ، این رشته دارای حروف کوچک و بزرگ و همچنین برخی از شخصیت های خاص است. فقط حروف را می توان به حروف کوچک تبدیل کرد ، بنابراین انتظار دارید نسخه کوچک این رشته باشد "abcdef_1@3$":

lowercaseString = exampleString.lower()
print(lowercaseString) 

پس از تماس با str.lower() روش روی را exampleString، کپی کوچک آن به عنوان یک شیء جدید ذخیره می شود ، که توسط آن ارجاع شده است lowercaseString. فقط برای اطمینان از اینکه str.lower() روش خروجی صحیح را تولید می کند ، بیایید مقایسه کنیم lowercaseString به نسخه کوچک مورد انتظار exampleString:

if(lowercaseString == "abcdef_1@3$"):
    print("Lowercase string EQUAL to expected string!")
else:
    print("Lowercase string NOT EQUAL to expected string!")

این قطعه کد خروجی خواهد داشت:

"Lowercase string EQUAL to expected string!"

عالی!

توجه داشته باشید: روش مخالف به str.lower() روش است str.upper(). به همان روش استفاده می شود str.lower(). همچنین، با استفاده از عبارت می توانید بررسی کنید که آیا یک رشته تماماً کوچک یا بزرگ است str.islower() یا str.isupper().

چرا استفاده کنید str.casefold() بجای str.lower()

روش قبلی برای بیشتر موارد استفاده مناسب است. با پیروی از چند قانون ساده آنچه را که قرار است انجام دهد، انجام می دهد. با شروع با Python 3.0، رشته ها به صورت آرایه هایی از کاراکترهای یونیکد نمایش داده می شوند که کار را آسان می کند. str.lower() برای جایگزینی هر کد یک حرف بزرگ با کد حروف کوچک مربوطه.

پیشنهاد می‌کنیم بخوانید:  PySpark برای مبتدیان – روش پردازش داده ها با Apache Spark و Python

این اصل تقریباً در تمام موارد استفاده به خوبی کار می کند، اما مواردی وجود دارد که باید استفاده از آن را در نظر بگیرید str.casefold() روش در عوض.

به عنوان مثال، هنگام اجرا تطبیق بدون مورد از دو رشته، str.casefold() راهی برای رفتن است از آنجایی که پایتون از یونیکد برای نمایش رشته ها استفاده می کند، تمام قوانین تعریف شده در استاندارد یونیکد برای پایتون نیز اعمال می شود. که در بخش 3.13 استاندارد موارد زیر را بیان می کند:

یک رشته X یک مسابقه بدون مورد برای یک رشته است Y اگر و تنها اگر:

toCasefold(X) = toCasefold(Y)

از آنجا که str.casefold() پیاده سازی پایتون از روش یونیکد است toCasefold()، باید هنگام اجرای تطبیق بدون حروف از آن استفاده کنید.

توجه داشته باشید: هر دو X.casefold() و toCasefold(X) روش ها هر کاراکتر رشته را ترسیم می کنند X همانطور که در CaseFolding.txt فایل در پایگاه داده کاراکترهای یونیکد.

برای نشان دادن تفاوت بین str.lower() و str.casefold()بیایید نگاهی به مثال حرف آلمانی “ß” بیندازیم، یک حرف کوچک که برابر با “ss” است. این بدان معنی است که رشته های زیر باید دقیقاً مطابقت بدون مورد داشته باشند:

A = "ßaBcß"
B = "ssAbCss"

اما اگر سعی کنید آنها را با استفاده از str.lower() با روش، نتیجه مورد انتظار را نخواهید گرفت:

Al = A.lower()
Bl = B.lower()

print(Al == Bl)

این مقایسه تولید خواهد کرد False ارزش، به این معنی که A.lower() برابر نیست B.lower(). به این دلیل است که “ß” در حال حاضر یک حرف کوچک است، بنابراین str.lower() روش آن را تغییر نمی دهد از این رو، Al و Bl دارای مقادیر زیر است:

Al = "ßabcß"
Bl = "ssabcss"

به طور مشخص، Al برابر نیست Bl، بنابراین مقایسه قبلی باید تولید کند False ارزش.

برای اصلاح این رفتار غیر منتظره، باید از str.casefold() روش. در مقایسه با تهاجمی تر است str.lower() زیرا کاملاً تمام تفاوت های موجود در حروف را در یک رشته حذف می کند. بنابراین، “ß” با “ss” جایگزین می شود و می توانید رشته ها را بدون مورد مطابقت دهید A و B:

Ac = A.casefold()


Bc = B.casefold()

حال، اگر رشته های تا شده را با هم مقایسه کنید A و B، نتیجه مورد انتظار را دریافت خواهید کرد، همان چیزی که در تعریف شده است استاندارد یونیکد:

print(Ac == Bc)

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

پیشنهاد می‌کنیم بخوانید:  نحوه تعویض مقادیر دو متغیر بدون متغیر موقت در پایتون

مشکلی با چیزی داشتن str.casefold()

بااینکه str.casefold() یک روش داخلی پایتون است که برای پیاده سازی toCasefold() روش استاندارد یونیکد، قطعاً نباید از آن بی دقت استفاده کنید. برخی از موارد لبه وجود دارد که نتیجه مطلوب را ایجاد نمی کند.

به عنوان مثال، استاندارد یونیکد نسخه تاشو (کوچک) حروف بزرگ را تعریف می کند I مانند iکه با کاربرد آن در اکثر زبان ها همخوانی دارد. اما این نقشه برداری در ترکی کار نمی کند. زبان ترکی دو نوع حرف دارد I با خبرنگاران کوچک خود:

  • حروف بزرگ iI (شبیه به حروف بزرگ معمولی من)
    • با نوع کوچک آن – ı
  • نقطه چین iİ
    • با نوع کوچک آن – i (شبیه به حروف کوچک معمولی من)

در نتیجه، کد نویسی استاندارد یونیکد در زبان ترکی کار نمی کند. به همین دلیل، استاندارد یونیکد دو نگاشت تاشوی مختلف را تعریف کرد – برای زبان‌های ترکی و غیرترکی. نوع ترکی تعداد ظرایف ذکر شده را از زبان ترکی در نظر می گیرد و نوع غیر ترکی حروف بزرگ را ترسیم می کند. I به همتای کوچک معمول خود i.

از سوی دیگر، str.casefold() فقط از نگاشت مورد-تای پیش فرض (غیر ترکی) استفاده می کند، بنابراین نمی تواند تطبیق بدون حروف را در ترکی برای برخی کلمات انجام دهد.

توجه داشته باشید: بنابراین، گفته می شود که str.casefold() در آزمون ترکی قبول نمی شود!

به عنوان مثال، سیم‌های زیر در ترکی قرار است با هم تطبیق نداشته باشند:

str1 = "Iabcİ"
str2 = "ıabci"

اما، در عمل، مقایسه معمولی نتیجه خواهد داد False ارزش:

print(str1.casefold() == str2.casefold())


توجه داشته باشید که str.casefold() هر دو را تبدیل کرد I و İ به همان کاراکتر کوچک – iکه طبق نگاشت موردی استاندارد (غیر ترکی) استاندارد یونیکد می باشد. این همان چیزی است که باعث نتیجه نامطلوب این تطابق بی مورد شد.

این مثال موردی را نشان می دهد که str.casefold() نتیجه نادرست تطابق بدون مورد در یک زبان خاص را ایجاد می کند. بنابراین، باید به زبانی که با آن کار می کنید توجه کنید.

نتیجه

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

ما به زودی پوشش داده شده است str.lower() روش در پایتون و سپس وارد جزئیات str.casefold() روش.

ما موارد استفاده اصلی آن را پوشش داده ایم و آنها را با موارد استفاده می کنیم str.lower() روش، مفاهیم اساسی و استانداردهای پیرامون پیاده‌سازی پایتون الگوریتم تاشوی موردی را توضیح داد.

در پایان، چند مورد استفاده مشکل ساز را مورد بحث قرار داده ایم تا بتوانید از برخی از نتایج نامطلوب که str.casefold() روش می تواند تولید کند.

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



منتشر شده در 1403-01-06 22:01:05

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

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

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