يقدّم الصنف str العديد من الطرق المفيدة للتعامل مع السلاسل النصية وتكوينها.
وتشمل هذه الطرق البحث والتنظيف والتقسيم والتحويل والترجمة وغير ذلك من التقنيات.
السلاسل النصية هي تسلسلات من نقاط ترميز يونيكود، ويمكن الوصول إلى «المحارف» أو نقاط الترميز المفردة (سلاسل نصية طولها 1) عبر رقم 0-based index من اليسار، أو رقم -1-based index من اليمين.
وتُنفّذ السلاسل النصية جميع عمليات التسلسل الشائعة.
ويمكن المرور عليها بالتكرار باستخدام الصيغة for item in <str> أو الصيغة for index, item in enumerate(<str>).
كما يمكن ضمّها باستخدام <str> + <other str> أو <str>.join(<iterable>).
السلاسل النصية غير قابلة للتغيير، أي أن قيمة كائن str في الذاكرة لا يمكن أن تتغير.
الدوال أو الطرق التي تعمل على str (مثل تلك التي نتعلّمها هنا) ستُرجع instance جديدًا من كائن str هذا بدلًا من تعديل str الأصلي.
فيما يلي مجموعة صغيرة مختارة من طرق السلاسل النصية في Python. للاطلاع على القائمة الكاملة، راجع صنف str في وثائق Python.
<str>.title() تُحلّل سلسلة نصية وتُكبّر أول «محرف» في كل «كلمة» تجدها.
وفي Python، يعتمد هذا اعتمادًا كبيرًا على مُرمِّز اللغة المستخدم وعلى الطريقة التي تمثّل بها اللغة المعنية الكلمات والمحارف.
وقد تكون هناك أيضًا قواعد إعدادات محلية سارية للغة أو لمجموعة محارف معيّنة.
man_in_hat_th = 'ผู้ชายใส่หมวก'
man_in_hat_ru = 'мужчина в шляпе'
man_in_hat_ko = '모자를 쓴 남자'
man_in_hat_en = 'the man in the hat.'
>>> man_in_hat_th.title()
'ผู้ชายใส่หมวก'
>>> man_in_hat_ru.title()
'Мужчина В Шляпе'
>>> man_in_hat_ko.title()
'모자를 쓴 남자'
>> man_in_hat_en.title()
'The Man In The Hat.'
<str>.endswith(<suffix>) تُرجع True إذا انتهت السلسلة النصية بـ <suffix>، وFalse خلاف ذلك.
>>> 'My heart breaks. 💔'.endswith('💔')
True
>>> 'cheerfulness'.endswith('ness')
True
# Punctuation is part of the string, so needs to be included in any endswith match.
>>> 'Do you want to 💃?'.endswith('💃')
False
>> 'The quick brown fox jumped over the lazy dog.'.endswith('dog')
False
<str>.strip(<chars>) تُرجع نسخة من str بعد إزالة <chars> من البداية والنهاية.
نقاط الترميز المحددة في <chars> ليست بادئة ولا لاحقة، بل ستُزال كل التوليفات المكوّنة من نقاط الترميز انطلاقًا من طرفي السلسلة النصية.
وإذا لم يُحدَّد شيء لـ <chars>، ستُزال كل التوليفات المكوّنة من نقاط ترميز المسافات البيضاء.
# This will remove "https://", because it can be formed from "/stph:".
>>> 'https://unicode.org/emoji/'.strip('/stph:')
'unicode.org/emoji'
# Removal of all whitespace from both ends of the str.
>>> ' 🐪🐪🐪🌟🐪🐪🐪 '.strip()
'🐪🐪🐪🌟🐪🐪🐪'
>>> justification = 'оправдание'
>>> justification.strip('еина')
'оправд'
# Prefix and suffix in one step.
>>> 'unaddressed'.strip('dnue')
'address'
>>> ' unaddressed '.strip('dnue ')
'address'
<str>.replace(<substring>, <replacement substring>) تُرجع نسخة من السلسلة النصية بعد استبدال كل مواضع ظهور <substring> بـ <replacement substring>.
الاقتباس المستخدم أدناه مأخوذ من The Hunting of the Snark بقلم Lewis Carroll.
# The Hunting of the Snark, by Lewis Carroll
>>> quote = '''
"Just the place for a Snark!" the Bellman cried,
As he landed his crew with care;
Supporting each man on the top of the tide
By a finger entwined in his hair.
"Just the place for a Snark! I have said it twice:
That alone should encourage the crew.
Just the place for a Snark! I have said it thrice:
What I tell you three times is true."
'''
>>> quote.replace('Snark', '🐲')
...
'\n"Just the place for a 🐲!" the Bellman cried,\n As he landed his crew with care;\nSupporting each man on the top of the tide\n By a finger entwined in his hair.\n\n"Just the place for a 🐲! I have said it twice:\n That alone should encourage the crew.\nJust the place for a 🐲! I have said it thrice:\n What I tell you three times is true."\n'
>>> 'bookkeeper'.replace('kk', 'k k')
'book keeper'
في هذا التمرين تساعد أختك الصغرى على تحرير ورقتها المدرسية. يبحث المعلّم عن علامات ترقيم صحيحة، وقواعد سليمة، واختيار ممتاز للكلمات.
لديك أربع مهام لتنظيف السلاسل النصية وتعديلها.
أي ورقة جيدة تحتاج إلى عنوان منسّق بشكل صحيح.
نفّذ الدالة capitalize_title(<title>) التي تأخذ عنوانًا str كمعامل، وتجعل الحرف الأول من كل كلمة كبيرًا.
يجب أن تُرجع هذه الدالة str بصيغة كتابة العناوين.
>>> capitalize_title("my hobbies")
"My Hobbies"
تريد أن تتأكد من أن علامات الترقيم في الورقة مثالية.
نفّذ الدالة check_sentence_ending() التي تأخذ sentence كمعامل. يجب أن تُرجع هذه الدالة bool.
>>> check_sentence_ending("I like to hike, bake, and read.")
True
لتبدو الورقة احترافية، يجب إزالة المسافات غير الضرورية.
نفّذ الدالة clean_up_spacing() التي تأخذ sentence كمعامل.
يجب أن تزيل الدالة المسافات البيضاء الزائدة من بداية الجملة ونهايتها، وتُرجع جملة str جديدة ومحدّثة.
>>> clean_up_spacing(" I like to go on hikes with my dog. ")
"I like to go on hikes with my dog."
لجعل الورقة أفضل، يمكنك استبدال بعض الصفات بمرادفاتها.
اكتب الدالة replace_word_choice() التي تأخذ sentence وold_word وnew_word كمعاملات.
يجب أن تستبدل هذه الدالة كل حالات old_word بـ new_word، وتُرجع str جديدًا يحتوي على الجملة المحدّثة.
>>> replace_word_choice("I bake good cakes.", "good", "amazing")
"I bake amazing cakes."
سجّل في Exercism لتتعلّم وتتقن Python عبر 17 مفهومًا146 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.