Строковые функции Python: руководство

    Команда Simple-Server
    03.06.2026
    9 мин

    Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.

    Список основных строковых функций для форматирования текста

    В первую очередь расскажем о функциях форматирования строк, а чтобы обучение шло веселее, в примерах будем использовать тексты, сгенерированные нейросетью «Порфирьевич» (если фраза состоит из двух предложений, то первое в каждом примере написано человеком, а второе — нейросетью, которую обучали на примерах из русской классики).

    • **capitalize()** — преобразует первый символ строки в верхний регистр, однако все остальные будут в нижнем:
    >>> phrase = 'нехватка программистов повышает значимость DevOps. После презентации разработчики начинают наперебой предлагать свои услуги, конкурируя между собой за DevOps.' >>> phrase.capitalize() 'Нехватка программистов повышает значимость devops. после презентации разработчики начинают наперебой предлагать свои услуги, конкурируя между собой за devops.'
    • **casefold()** — возвращает все элементы строки в нижнем регистре:
    >>> phrase = 'Российский рынок облачных провайдеров имеет хорошие перспективы в плане импортозамещения. Как он будет развиваться, пока не ясно, но потенциал у него есть.' >>> phrase.casefold() 'российский рынок облачных провайдеров имеет хорошие перспективы в плане импортозамещения. как он будет развиваться, пока не ясно, но потенциал у него есть.'
    • **center()** — с помощью этого метода можно выравнивать строки по центру:
    >>> text = 'Python прекрасно подходит для написания ИИ' >>> newtext = text.center(50,'*') >>> print(newtext) ****Python прекрасно подходит для написания ИИ****

    Небольшое пояснение. У функции **center()** два аргумента: первый (длина строки для центровки) обязательный, второй (заполнитель) — произвольный. В операции выше мы использовали оба. Наша строка состоит из 42 элементов, поэтому оставшиеся 8 были заполнены «звездочками». Если бы второго атрибута не было, на месте звездочек были бы пробелы.

    • **upper()** и **lower()** — преобразуют все символы в верхний и нижний регистр соответственно:
    >>> text = 'Проекты с применением технологий Интернета вещей становятся в Европе всё более популярными.' >>> text.lower() 'проекты с применением технологий интернета вещей становятся в европе всё более популярными.' >>> text.upper() 'ПРОЕКТЫ С ПРИМЕНЕНИЕМ ТЕХНОЛОГИЙ ИНТЕРНЕТА ВЕЩЕЙ СТАНОВЯТСЯ В ЕВРОПЕ ВСЁ БОЛЕЕ ПОПУЛЯРНЫМИ.'
    • **replace()** — предназначен для замены части строки другим элементом:
    >>> text.replace('Европе','России') 'Проекты с применением технологий Интернета вещей становятся в России всё более популярными.'

    У функции **replace()** есть и необязательный количественный атрибут, который обозначает максимальное количество замен, если заменяемый элемент встречается в тексте несколько раз. Он указывается на третьем месте:

    >>> text = 'ура-ура-ура' >>> text.replace('ура','гип',2) 'гип-гип-ура'
    • **strip()** — удаляет одинаковые символы по краям строки:
    >>> text = 'оле-оле-оле' >>> text.strip('оле') '-оле-'

    Если симметричных значений нет, будет удалено найденное слева или справа, а если указанные символы отсутствуют, вывод останется неизменным:

    >>> text.strip('ол') 'е-оле-оле' >>> text.strip('ле') 'оле-оле-о' >>> text.strip('ура') 'оле-оле-оле'
    • **title()** — создает заголовки в соответствии с тем, как это принято в английском, то есть пишет каждое слово с заглавной буквы. Снова похулиганим с Порфирьевичем:
    >>> texttitle = 'Респонденты разочарованы сетями 5G. Они ждали новых услуг от телефона, но получили их от Google.' >>> texttitle.title() 'Респонденты Разочарованы Сетями 5G. Они Ждали Новых Услуг От Телефона, Но Получили Их От Google.'

    Вы наверняка заметили, что метод **title()** делает и еще одну вещь: он переводит не начальные буквы в словах в нижний регистр, если они написаны в верхнем.

    • **expandtabs()** — меняет табуляцию в тексте, что помогает при форматировании:
    >>> clublist = 'Милан\tРеал\tБавария\tАрсенал' >>> print(clublist) Милан    Реал    Бавария    Арсенал >>> clublist.expandtabs(1) 'Милан Реал Бавария Арсенал' >>> clublist.expandtabs(5) 'Милан     Реал Бавария   Арсенал'

    Строковые функции для проверки значений

    Иногда бывает необходимо подсчитать определенное количество элементов последовательности или проверить, встречается ли в тексте какое-то значение. Эти и другие задачи решают следующие строковые функции.

    • **count()** — подсчитывает подстроки (отдельные элементы), встречающиеся в строке. За примером снова обратимся к нашей нейросети:
    >>> text = "Облачные технологии значительно ускоряют работу с нейросетями и ИИ. Особенно важны эти технологии для сотрудников крупной корпорации, работающей в любой области — от пилотирования космических кораблей до подготовки программистов." >>> element = "о" >>> number = text.count(element) >>> print("Буква «о» встречается в тексте", number, "раз.(-а)") Буква «о» встречается в тексте 29 раз(-а).

    В качестве подстроки можно указать последовательность символов (будем использовать текст из примера выше):

    >>> element = "об" >>> number = text.count(element) >>> print("Сочетание «об» встречается в тексте", number, "раз(-а).") Сочетание «об» встречается в тексте 2 раз(-а).

    Добавим, что у функции **count() **есть и два необязательных числовых атрибута, обозначающих границы поиска указанного элемента:

    >>> element = "о" >>> number = text.count(element,20,80) >>> print("Буква «о» в указанном фрагменте текста встречается", number, "раз(-а).") Буква «о» в указанном фрагменте текста встречается 6 раз(-а).
    • **find()** — выполняет поиск указанного в строке значения и возвращает наименьший индекс. Снова используем пример выше:
    >>> print(text.find(element)) 13

    Этот вывод означает, что первая найденная буква «о» располагается на 13-й позиции в строке (на самом деле на 14-й, потому что счет в Python начинается с нуля). Заметьте, что интерпретатор проигнорировал заглавную букву «О», которая как раз и расположена на нулевой позиции.

    Теперь давайте совместим две изученные функции в одном коде:

    >>> text = "Облачные технологии значительно ускоряют работу с нейросетями и ИИ. Особенно важны эти технологии для сотрудников крупной корпорации, работающей в любой области — от пилотирования космических кораблей до подготовки программистов." >>> element = "о" >>> number = text.count(element,20,80) >>> print("Буква «о» в указанном фрагменте текста встречается", number, "раз(-а), а первый раз во всём тексте на", (text.find(element)), "месте.") Буква «о» в указанном фрагменте текста встречается 6 раз(-а), а первый раз во всём тексте на 13 месте.
    • **index()** — по работе похож на **find()** , однако при отсутствии введенного значения выдаст примерно такую ошибку:
    Traceback (most recent call last): File "C:\Python\text.py", line 4, in <module> print(text.index(element)) ValueError: substring not found

    А вот что выдал бы интерпретатор при использовании функции **find()** в этом случае:

    Это отрицательная позиция, то есть значение не найдено.

    • **enumerate()** — очень полезная функция, которая не только перебирает элементы списка или кортежа, возвращая их значения, но также возвращает и порядковый номер каждого элемента:
    team_scores = [78, 74, 56, 53, 49, 47, 44] for number, score in enumerate(team_scores,1): print(str(number) + '-я команда набрала ' + str(score) + ' очков(-а)')

    Для вывода значений с их порядковыми номерами мы ввели несколько переменных: _number _для порядковых номеров, _score _для значений списка, а _str_ обозначает строку. И вот вывод:

    1-я команда набрала 78 очков(-а) 2-я команда набрала 74 очков(-а) 3-я команда набрала 56 очков(-а) 4-я команда набрала 53 очков(-а) 5-я команда набрала 49 очков(-а) 6-я команда набрала 47 очков(-а) 7-я команда набрала 44 очков(-а)

    Заметьте, что вторым атрибутом функции **enumerate()** указано число 1, поскольку иначе Python стал бы считать с нуля.

    • **len()** — подсчитывает длину объекта, то есть количество элементов, из которых состоит та или иная последовательность:

    Вот так мы посчитали количество элементов в списке из примера выше. А теперь снова повеселимся с Порфирьевичем, напишем строку и подсчитаем число символов в ней:

    >>> porfirevich = 'Говорят, что искусственный интеллект исключает человеческий фактор. Но не забывайте, что человеческий фактор все еще присутствует в СМИ и в правительственных структурах.' >>> len(porfirevich) 169

    Специальные строковые функции Python

    • **join()** — позволяет конвертировать списки в строки:
    >>> cities = ['Москва','Санкт-Петербург','Нижний Новгород','Казань','Уфа','Самара','Ростов-на-Дону'] >>> cities_str = ', '.join(cities) >>> print('Города в одну строчку:', cities_str) Города в одну строчку: Москва, Санкт-Петербург, Нижний Новгород, Казань, Уфа, Самара, Ростов-на-Дону
    • **print()** — дает печатное представление любого объекта в Python:
    >>> cities = ['Москва','Санкт-Петербург','Нижний Новгород','Казань','Уфа','Самара','Ростов-на-Дону'] >>> print(cities) ['Москва', 'Санкт-Петербург', 'Нижний Новгород', 'Казань', 'Уфа', 'Самара', 'Ростов-на-Дону']
    • **type()** — возвращает тип объекта:
    >>> type(cities) <class 'list'>

    Выяснили, что объект из предыдущего примера — список. Полезно для новичков, ведь они могут поначалу путать, например, списки и кортежи, которые имеют разные функциональные возможности и обрабатываются интерпретатором тоже по-разному.

    • **map()** — является довольно эффективной заменой цикла **for** , позволяя перебирать элементы какого-либо итерируемого объекта, применяя к каждому из них встроенную функцию. Для примера давайте преобразуем список строковых значений в целочисленные, для чего задействуем функцию **int** :
    >>> numbers_list = ['4', '7', '11', '12', '17'] >>> list(map(int, numbers_list)) [4, 7, 11, 12, 17]

    Как видим, мы использовали функцию **list()** , «обернув» в нее **map()** — это было необходимо, чтобы избежать вот такого вывода:

    >>> numbers_list = ['4', '7', '11', '12', '17'] >>> map(int, numbers_list) <map object at 0x0000000002E272B0>

    Это не ошибка, просто получился вывод ID объекта, и программа продолжит работу. Но чтобы получить нужный вывод списка, полезно в таких случаях использовать метод **list()**.


    Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.

    VPS для проекта

    VPS с root-доступом, NVMe и поддержкой 24/7 на Simple-Server.

    StarterVDS

    490₽

    в месяц

    1 ядро

    1 ГБ RAM

    20 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Безлимитный трафик
    Заказать VPS
    Рекомендуем

    PerformanceVDS

    1190₽

    в месяц

    2 ядра

    4 ГБ RAM

    60 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Базовая DDoS-защита
    Заказать VPS

    Нужна другая конфигурация или чистый VPS без панели?

    Все тарифы VPS

    Похожие статьи, которые могут быть вам интересны