str - це незмінна послідовність кодових точок Unicode.
Це може включати літери, діакритичні знаки, позиційні символи, числа, символи валют, емодзі, розділові знаки, пробіли та розриви рядків тощо.
Рядки тексту (англ. string) реалізують усі загальні операції з послідовностями і їх можна перебирати за допомогою синтаксису for item in <str> або for index, item in enumerate(<str>).
Окремі кодові точки (рядки тексту довжиною 1) можна отримати за номером 0-based index зліва або за номером -1-based index справа.
Рядки тексту можна зʼєднати за допомогою <str> + <other str> або <str>.join(<iterable>), а розділити за допомогою <str>.split(<separator>).
Вони також пропонують багато інших можливостей форматування та складання.
Для подальшої роботи з рядками тексту Python надає багатий набір методів рядків для пошуку, очищення, перетворення, транслювання та багатьох інших операцій.
Деякі з найуживаніших методів str:
<str>.startswith(<substr>) та <str>.endswith(<substr>)
<str>.title(), <str>.upper()/<str>.lower() та <str>.swapcase()
<str>.strip(<chars>), <str>.lstrip(<chars>) або <str>.rstrip(<chars>)
<str>.replace(<old>, <new>)
Оскільки str є незмінним, значення обʼєкта str у памʼяті не може змінитися; методи, які нібито змінюють рядок тексту, повертають нову копію або новий примірник цього обʼєкта str.
<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>.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>.strip(<chars>) повертає копію str, з якої видалено провідні та кінцеві <chars>.
Кодові точки, указані в <chars>, не є префіксом чи суфіксом: будуть видалені усі комбінації цих кодових точок, починаючи з обох кінців рядка тексту.
Якщо для <chars> нічого не вказано, буде видалено всі комбінації кодових точок пробільних символів.
Якщо потрібно видалити символи лише з лівого чи правого боку, можна використати <str>.lstrip(<chars>) та <str>.rstrip(<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 авторства Льюїса Керролла.
# 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'
🌟Нове в Python 3.9
Python 3.9 додає два нові методи рядків тексту, які значно спрощують видалення префіксів і суфіксів.
<str>.removeprefix(<substring>) повертає рядок тексту без префікса (string[len(<substring>):]). Якщо <substring> відсутній, буде повернено копію початкового рядка тексту.
# removing a prefix
>>> 'TestHook'.removeprefix('Test')
'Hook'
>>> 'bookkeeper'.removeprefix('book')
'keeper'
<str>.removesuffix(<substring>) повертає рядок тексту без суфікса (string[:-len(substring)]). Якщо <substring> відсутній, буде повернено копію початкового рядка тексту.
# removing a suffix
>>> 'TestHook'.removesuffix('Hook')
'Test'
>>> 'bookkeeper'.removesuffix('keeper')
'book'
Більше прикладів і методів можна знайти в неформальному туторіалі. Це чудова відправна точка. How to Unicode у документації Python містить багато подробиць про Unicode, кодування, байти та інші технічні аспекти роботи з рядками тексту в Python.
Python також підтримує регулярні вирази через модуль re, які буде розглянуто в одному з наступних концептів.