Операції з рядками Python

Рядок представляє послідовність символів в кодуванні Unicode, укладених в лапки. Причому в Python ми можемо використовувати як одинарні, так і подвійні лапки:

name = "Tom"  
surname = 'Smith'  
print(name, surname) # Tom Smith

Однією з найпоширеніших операцій з рядками є їх об'єднання або конкатенація. Для об'єднання рядків застосовується знак плюса:

name = "Tom"  
surname = 'Smith'  
fullname = name + "" + surname  
print(fullname) # Tom Smith  

З об'єднанням двох рядків все просто, але що, якщо нам треба скласти рядок і число? У цьому випадку необхідно привести число до рядка за допомогою функції str():

name = "Tom"  
age = 33  
info = "Name:" + name + "Age:" + str(age)  
print(info) # Name: Tom Age: 33  

Ескейп-послідовності

Крім стандартних символів Рядки можуть включати Керуючі ескейп-послідовності, які інтерпретуються особливим чином. Наприклад, послідовність \n представляє перехід на новий рядок. Тому наступний вираз:

print ("час прийшов в гості відправиться \ пждет мене старовинний друг")   

На консоль виведе два рядки:

Час прийшов в гості відправиться
чекає мене старовинний друг

Теж саме стосується і послідовності \t, яка додає табляцию.

Крім того, існують символи, які начебто складно використовувати в рядку. Наприклад, лапки. І щоб відобразити лапки (як подвійні, так і одинарні) всередині рядка, перед ними ставиться слеш:

print("Кафе"Central Perk\"") 

Порівняння рядків

Особливо слід сказати про порівняння рядків. При порівнянні рядків береться до уваги символи та їх регістр. Так, цифровий символ умовно менше, ніж будь-який алфавітний символ. Алфавітний символ у верхньому регістрі умовно менше, ніж алфавітні символи в нижньому регістрі. Наприклад:

str1 = "1a"  
str2 = "aa"  
str3 = "Aa"  
print(str1 > str2) # False, так як перший символ в str1 - цифра  
print (str2 > str3) # True, так як перший символ в str2-в нижньому регістрі  

Тому рядок "1a" умовно менше, ніж рядок "aa". Спочатку порівняння йде по першому символу. Якщо початкові символи обох рядків представляють цифри, то меншою вважається менша цифра, наприклад, "1a" менше, ніж 2a.

Якщо початкові символи представляють алфавітні символи в одному і тому ж регістрі, то дивляться за алфавітом. Так, "aa" менше, ніж "ba", а "ba" менше, ніж "ca".

Якщо перші символи однакові, в розрахунок беруться другі символи при їх наявності.

Залежність від регістру не завжди бажана, так як по суті ми маємо справу з однаковими рядками. У цьому випадку перед порівнянням ми можемо привести обидва рядки до одного з регістрів.

Функція lower() призводить рядок до нижнього регістру, а функція upper() - до верхнього.

str1 = "Tom"  
str2 = "tom"  
print(str1 == str2) # False - рядки не рівні     

print(str1.lower() == str2.lower()) # True  ​

Додаткові функції для рядків 

Функція  Опис 
s.capitalize()  Повертає копію рядка s, у якій перший символ – велика літера, а інші – маленькі.
s.center(width[, fillchar])  Повертає s, центрований у рядку довжини width. Початок та кінець рядка заповнюються символом fillchar (за угодою - пропуск).
s.endswith(suffix[, start[, end]])  Повертає True, якщо рядок s завершується суфіксом suffix. Якщо вказано start, end, то перевіряється s[start:end]
s.expandtabs(tabsize=8)  Повертає копію рядка s, у якій всі символи табуляції (‘\t’) замінюються визначеною кількістю пропусків, в залежності від поточної позиції.
s.find(sub[, start[, end]])  Повертає найменший індекс входження sub у s. Якщо вказано start, end, то перевіряється s[start:end] Повертає -1 якщо sub не знайдено.
s.format(*args, **kwargs)  Виконує форматування рядка. Замість полів підстановки ‘{ }’ вставляються аргументи.
s.isalnum()  Повертає True, якщо всі символи рядка s є літерами або цифрами. 
s.isalpha()  Повертає True, якщо всі символи рядка s є літерами. 
s.isdigit()  Повертає True, якщо всі символи рядка s є цифрами. 
s.isidentifier()  Повертає True, якщо рядок s є ідентифікатором. 
s.islower()  Повертає True, якщо всі літери рядка s у нижньому регістрі 
s.isnumeric()  Повертає True, якщо всі символи рядка s є числовими. 
s.isprintable()  Повертає True, якщо всі символи рядка s є друкованими. 
s.isspace()  Повертає True, якщо всі символи рядка s є пропусками. 
s.istitle()  Повертає True, якщо рядок s є заголовком (усі слова починаються з великої літери). 
s.isupper()  Повертає True, якщо всі літери рядка s у верхньому регістрі 
s.ljust(width[, fillchar])  Повертає s, вирівняний по лівому краю у рядку довжини width. Кінець рядка заповнюються символом fillchar (за угодою - пропуск). 
s.lower()  Повертає копію рядка s, у якій всі літери рядка s переведені до нижнього регістру 
s.lstrip([chars])  Повертає копію рядка s, в якій ліворуч видалено символи, що входять у chars (за угодою – пропуски) 
s.replace(old, new[, count])  Повертає копію рядка s, в якій всі входження рядка old замінюються new. Якщо задано count, то замінюється не більше count входжень 
s.rfind(sub[, start[, end]])  Повертає найбільший індекс входження sub у s. Якщо вказано start, end, то перевіряється s[start:end] Повертає -1 якщо sub не знайдено. 
s.rindex(sub[, start[, end]])  Те ж саме, що rfind(), однак дає помилку, якщо sub не знайдено. 
s.rjust(width[, fillchar])  Повертає s, вирівняний по правому краю у рядку довжини width. Початок рядка заповнюються символом fillchar (за угодою - пропуск). 
s.rstrip([chars])  Повертає копію рядка s, в якій праворуч видалено символи, що входять у chars (за угодою – пропуски) 
s.strip([chars])  Повертає копію рядка s, в якій ліворуч та праворуч видалено символи, що входять у chars (за угодою – пропуски) 
s.swapcase()  Повертає копію рядка s, в якій маленькі літери змінені на великі та навпаки. 
s.title()  Повертає копію рядка s у форматі заголовку (усі слова починаються з великої літери). 
s.upper()  Повертає копію рядка s у форматі з усіма великими літерами. 
s.zfill(width)  Повертає копію рядка s, в якій зліва вставлені символи ‘0’ так, щоб загальна довжина рядка дорівнювала width. Якщо присутній знак + або -, він зберігається на початку рядка.