العبارة "إن السلاسل النصية في بايثون ليست حساسة لحالة الأحرف" هي عبارة صحيحة، وذلك لأن السلاسل النصية في بايثون يتم تخزينها ومعالجتها دون مراعاة حالة الأحرف.
على سبيل المثال، إذا تم تحديد السلسلة النصية التالية:
Python
s = "Hello, world!"
فسيتم تخزينها على النحو التالي:
b"Hello, world!"
حيث أن كل حرف في السلسلة النصية يتم تمثيله بقيمة بايت. وهذه القيم البايتية لا تفرق بين الأحرف الكبيرة والصغيرة.
وهذا يعني أن المقارنة بين السلاسل النصية تتم بناءً على قيم البايت الخاصة بها، وليس بناءً على حالة الأحرف.
على سبيل المثال، فإن المقارنة التالية سترجع True، وذلك لأن قيم البايت الخاصة بكلتا السلاسل النصية متطابقة:
Python
s1 = "Hello, world!"
s2 = "hello, world!"
print(s1 == s2)
ولكن، إذا أردنا أن نجعل المقارنة حساسة لحالة الأحرف، فيمكننا استخدام دالة casefold()
.
تأخذ هذه الدالة سلسلة نصية كوسيطة، وتعيد نسخة من السلسلة النصية مع توحيد حالة الأحرف.
على سبيل المثال، فإن المقارنة التالية سترجع False، وذلك لأن دالة casefold()
قد حولت كلا السلاسل النصية إلى حالة صغيرة قبل المقارنة:
Python
s1 = "Hello, world!"
s2 = "hello, world!"
print(s1.casefold() == s2.casefold())
في بعض الحالات، قد يكون من المفيد جعل السلاسل النصية حساسة لحالة الأحرف. على سبيل المثال، إذا كنا نقوم بالبحث عن كلمة في سلسلة نصية، فقد نريد أن نبحث عن الكلمة في حالة معينة.
ولكن، بشكل عام، فإن السلاسل النصية في بايثون ليست حساسة لحالة الأحرف.