Баннер мобильный (3) Пройти тест

Строки в Python: функции и методы str от базовых к продвинутым

Обзор str в Python с примерами его использования

Разбор

21 октября 2025

Поделиться

Скопировано
Строки в Python: функции и методы str от базовых к продвинутым

Содержание

    Разбираем принципы работы, базовые операции со строками подробно и на примерах кода.

    Что такое строки в Python

    Строка в Python — это последовательность символов в кодировке Unicode, представленная типом str

    Чтобы создать строку, достаточно заключить текст в одинарные (‘) или двойные («) кавычки:

    str1 = 'Hello, world'

    Для многострочного текста используют тройные кавычки (»’ или «»»):

    str2 = "Hello, world"

    Иногда кавычки нужны прямо внутри строки, тогда их экранируют с помощью обратного слэша (\), например It’s great нужно оформить как ‘It\’s great’.

    Принцип работы str

    Str() — это встроенный класс (тип) для строк. Его можно вызывать как функцию-конструктор: например, str(10) преобразует число 10 в строку «10».

    Пример

    name = "Иван"
    age = str(20)

    В age число 20 мы перевели в строчный тип данных, поэтому name и age можно «сложить» в одну строку с помощью конкатенации (+):

    text = name + ": " + age
    print(text)

    Вывод

    Иван: 20
    Строка в Python пример
    Пример в стандартном редакторе Python IDLE Shell

    Особенность строк — их неизменяемость, то есть после создания строку изменить не получится, можно только создать новую.

    Базовые операции со строками

    У строк можно вычислять длину, количество символов, разделять их, складывать и даже умножать. Разберем простые операции.

    Индексация и срезы

    • Индексация — это способ доступа к отдельным символам строки по их позиции. Каждый символ в строке имеет свой индекс, начиная с 0 для первого символа.

    Символ по индексу получают через s[i], где i — позиция.

    Пример

    s = "Python"
    print(s[0])

    Вывод:

    P
    • Срезы — это способ получения подстроки или части строки с помощью указания диапазона индексов. 

    Они позволяют извлекать последовательности символов, задавая начало, конец и шаг через конструкцию s[a:b:step], где a — начальный индекс (включительно), b — конечный индекс (не включительно), step — шаг (по умолчанию 1).

    Например, в строке «Python» срез s[1:4] возвращает «yth». Если убрать a, срез начинается с начала (s[:3] → «Pyt»), если опустить b — до конца (s[3:] → «hon»).

    Реверс строки

    Реверс строки используется для получения строки в обратном порядке символов. Для этого можно использовать срез с отрицательным шагом -1: s[::-1].

    Например, для строки s = «Python» выражение s[::-1] вернет nohtyP.

    Альтернативный способ: функция reversed(), которая дает итератор — объект, позволяющий последовательно перебирать элементы. Чтобы из него получить строку, его нужно преобразовать с помощью ».join(reversed(s)). Результат будет тем же.

    Длина строки

    Длина строки определяется функцией len(). Вызов len(s) возвращает количество символов, включая пробелы. 

    Например, len(«Привет всем») вернет 11, так как пробел тоже считается за символ.

    Конкатенация и умножение

    • Конкатенация строк выполняется оператором +, она позволяет складывать строки в одну. 
    • Умножение строки на число (*) повторяет ее, например «ха» * 3 даст «хахаха».

    Вставка в строку через срезы и join()

    Для объединения множества строк эффективнее использовать метод join():

    Добавим в пустую строку три элемента (a, b и c): 

    s = ''.join(['a', 'b', 'c'])
    print(s) 

    Получится abc.

    Он быстрее, чем конкатенация «a» + «b» + «c», особенно для больших списков, потому что конкатенация создает новую строку на каждом шаге, что увеличивает затраты памяти и времени.

    Также метод join() можно использовать для объединения строк с разделителем:

    s = '-'.join(['a', 'b', 'c'])
    print(s)

    Получим a-b-c.

    Что касается срезов, то, чтобы добавить текст в середину строки, нужно взять два среза. Объявим строку: 

    a = 'Hello world'

    Затем определим срез с первыми пятью символами (Hello) и сохраняем остаток строки с другими пятью символами (world):

    b = a[:5] + ', new' + a[5:]
    print(b)

    Вывод:

    Hello, new world

    Приведение к определенному регистру

    Как помним из особенностей строк, методы не изменяют исходную строку — каждый из них возвращает новую строку.

    Переводит все буквы в нижний регистр

    "ПрИвЕт".lower()

    Вывод:

    привет

    Для вывода результата в консоль не забудьте заключить метод преобразования строки в print(). 

    Переводит все буквы в верхний регистр.

    "Привет!".upper()

    Вывод:

    ПРИВЕТ!

    Делает первую букву строки заглавной, остальные — строчными

    "python".capitalize()

    Вывод:

    Python

    При этом пробелы в начале не пропускает

    "  HELLO".capitalize()

    Вывод

    . hello

    Делает первую букву каждого слова заглавной, остальные — строчными. Разделителями считаются как пробелы, так и апострофы:

    "rock'n'roll".title()
    "добро пожаловать".title()

    Вывод:

    Rock'N'Roll
    Добро Пожаловать

    Инвертирует регистр каждой буквы.

    "Hello Питон".swapcase()

    Вывод:

    hELLO пИТОН

    Удаление пробелов и служебных символов

    Методы strip(), lstrip() и rstrip() удаляют пробелы и служебные символы (например, \n, \t) из строки.

    Убирает пробелы и служебные символы с обоих концов строки.

    " hello \n".strip() 

     Вывод:

    hello 

    Удаляет пробелы и служебные символы только слева

    " hello \n".lstrip() 

    Вывод

    hello \n 

    Удаляет пробелы и служебные символы только справа. 

    " hello \n".rstrip() 

    Вывод:

    hello

    Проверка начала и конца строки

    Методы startswith() и endswith() проверяют, начинается или заканчивается ли строка заданной подстрокой. Возвращают True или False.

    Проверяет начало строки.

    "Python code".startswith("Py")

    Вывод:

    True

    Проверяет конец строки.

    "Python code".endswith("code")

    Вывод

    True

    Поиск и подсчет

    Методы find(), rfind(), index() и count() помогают искать подстроки и подсчитывать их вхождения в строке.

    Возвращает индекс первого вхождения подстроки или -1, если подстрока не найдена. 

    "Python Python".find("tho") 

    Вывод:

    Возвращает индекс последнего вхождения подстроки или -1, если подстрока не найдена.

    "Python Python".rfind("tho")

    Вывод:

    8

    Похож на find(), но вызывает ошибку ValueError, если подстрока не найдена.

    "Python".index("tho") 

    Вывод:

    2

    Возвращает количество вхождений подстроки. 

    "Python Python".count("Py") 

    Вывод:

    2

    Разбор строк

    Ранее мы разбирали метод split(), как он делит строки по пробелам, как указать свой разделитель и зачем нужен параметр maxsplit.

    Для разбиения с конца используйте метод rsplit(). Он работает как split(), но начинает разделение с правого края.

    s = "a,b,c,d"
    result = s.rsplit(",", 1)
    print(result)

    Вывод:

    ['a,b,c', 'd']

    Для разбивки многострочного текста по переносам строк используйте splitlines(). Он разделяет строку на список строк по символам переноса (\n, \r, \r\n). Параметр keepends=True сохраняет эти символы в результате.

    s = "line1\nline2\nline3"
    result = s.splitlines()
    print(result)

    Вывод:

    ['line1', 'line2', 'line3']

    Split и map

    Вызов map(f, iterable) применяет функцию к каждому элементу и возвращает итератор. В связке со split() можно сразу преобразовать типы. Про map() рассказывали в этой статье.

    s = "1 2 3 4 5"
    numbers = list(map(int, s.split())) 

    Вывод:

    [1, 2, 3, 4, 5]

    Проверочные методы строк с префиксом is*

    Строковые методы с префиксом is* проверяют содержимое строки и возвращают True или False. Их используют для валидации пользовательского ввода, анализа текста или проверки формата данных.

    Проверяет, состоит ли строка только из цифр (0–9). 

    "123".isdigit()

    Вывод.

    True

    Или: 

    "12a3".isdigit() 

    Вывод:

    False

    Проверяет, состоит ли строка только из букв (a–z, A–Z, включая Unicode-символы, например кириллицу).

    "Python".isalpha() 

    Вывод:

    True

    Или:

    "Python3".isalpha()

    Вывод:

    False

    Проверяет, состоит ли строка только из букв и цифр.

    "Python2023".isalnum() 

    Вывод:

    True

    Или:

    "Python 2023".isalnum()

    Вывод:

    False

    Проверяет, состоит ли строка только из пробельных символов (пробел, табуляция, перенос строки). 

    " \n\t".isspace()

    Вывод:

    True

    Или:

    " text ".isspace()

    Вывод:

    False

    Методы вроде isdigit() не определяют символы, похожие на цифры (например, надстрочные (²) или индексные символы (₂)). Они не входят в стандартный диапазон 0–9. Но вот isnumeric() сможет их идентифицировать.

    Форматирование строк

    Форматирование строк позволяет встраивать значения переменных в текст. Существует несколько способов, каждый с особенностями и применимостью.

    • F-строки (введены в PEP 498) — один из способов форматирования.

    Выражения заключают в фигурные скобки {} внутри строки с префиксом f

    Пример:

    pi = 3.14159
    text = f"Число Пи: {pi:.2f}"
    print(text)

    Вывод.

    Число Пи: 3.14

    Метод str.format() использует {} для позиционных или именованных аргументов.

    Старое %-форматирование работает через % оператор: %s для строк, %d для целых, %f для float.

    Более продвинутые приемы обработки строк

    Замена — replace()

    Метод replace() возвращает копию строки с замененными символами. Подробнее про replace() рассказывали здесь.

    Если указать count, заменится только указанное число вхождений слева направо.

    "ааа".replace("а", "б", 2)   

    Вывод

    бба

    Или:

    "2025-09-16".replace("-", "/")

    Вывод:

    "2025/09/16"

    Переводы

    Методы str.maketrans() и translate() используются для массовой замены или удаления символов в строке. Метод str.maketrans() создает таблицу соответствия символов, а translate() применяет ее.

    Пример:

    text = "Hello, world!"

    Удаляем гласные.

    trans_table = str.maketrans("", "", "aeiou")
    result = text.translate(trans_table)
    print(result)

    Вывод.

    Hll, wrld!

    Регулярные выражения для поиска и замены сложных шаблонов

    Регулярные выражения (модуль re) позволяют искать и заменять сложные шаблоны в строках. Метод re.sub() заменяет совпадения шаблона, а re.findall() возвращает все совпадения.

    Пример:

    Предварительно импортируем модуль re.

    import re
    text = "cat, hat, rat"

    Заменяем слова, оканчивающиеся на at.

    result = re.sub(r"[chr]at", "pet", text)
    print(result) # pet, pet, pet
    print(re.findall(r"\w+at", text))

    Вывод:

    ['cat', 'hat', 'rat']

    Сортировка символов

    Функции sorted(), min() и max() помогают анализировать символы строки. Sorted() возвращает отсортированный список символов, min() и max() — минимальный и максимальный символ по Unicode.

    Пример:

    s = "python"
    
    print(sorted(s))

    Вывод:

    ['h', 'n', 'o', 'p', 't', 'y']
    print(min(s)) 

    Вывод:

    H
    print(max(s))

    Вывод:

    y

    Итерация по символам

    Для перебора символов строки используйте цикл for ch in s или функцию iter() для создания итератора. Цикл проще, итератор полезен для ручного управления.

    Пример:

    s = "Python"
    for ch in s:
        print(ch, end=" ")

    Вывод:

    P y t h o n

    Проверка вхождения

    Оператор in проверяет, есть ли подстрока в строке, возвращая True или False. В отличие от find(), который возвращает индекс первого вхождения или -1, in не дает информации о позиции.

    Пример:

    s = "Python"
    print("yth" in s)

    Вывод:

    True
    print(s.find("yth"))

    Вывод:

    1

    Строки и коллекции: практические связки

    Частоты символов и слов

    Для подсчета частоты символов или слов в строке используйте словарь. Методы dict.get() и dict.setdefault() упростят подсчет. Для очистки текста перед анализом применяйте replace() и split().

    Пример:

    text = "hello hello world"
    freq = {}
    for word in text.split():
        freq[word] = freq.get(word, 0) + 1
    print(freq)

     Вывод:

    {'hello': 2, 'world': 1}

    Обновление словаря

    Метод dict.update() добавляет или обновляет пары ключ-значение в словаре. 

    Пример:

    freq1 = {'a': 1, 'b': 2}
    freq2 = {'b': 3, 'c': 4}
    freq1.update(freq2)
    print(freq1)  

    Вывод:

    {'a': 1, 'b': 3, 'c': 4}

    Множества

    Множества позволяют находить уникальные символы в строке и сравнивать строки через пересечение (&), разность (-) и симметричную разность (^). Как работать с множествами, можно почитать здесь.

    Оператор ^ отвечает за запрос xor python, возвращает символы, уникальные для каждой строки.

    Пример:

    s1, s2 = "hello", "world"
    set1, set2 = set(s1), set(s2)
    print(set1 ^ set2)  

    Вывод:

    {'d', 'e', 'h', 'r', 'w'}

    Кортежи в примерах распаковки результатов парсинга

    Кортежи подходят для распаковки результатов парсинга строк, когда нужно получить несколько значений.

    Пример:

    data = "name:age:city"
    name, age, city = data.split(":")
    print(name, age, city)

    Вывод:

    name age city

    Преобразование типов и работа с байтами

    Функции int(), float() и bool() конвертируют строки в числа или булевы значения. Стоит учесть, что если строка не соответствует формату, например, int(«abc») мы получим ошибку ValueError.

    Пример:

    s = "123"
    print(int(s))

    Вывод:

    123
    print(float(s))

    Вывод.

    123.0
    print(bool("True"))

    Вывод:

    True

    Полезные фишки и советы

    Обрезайте префиксы и суффиксы. Используйте методы removeprefix() и removesuffix() (начиная с Python 3.9) для удаления ненужных частей строки. Пример:

    s = "prefix_text_suffix"
    print(s.removeprefix("prefix_"))

    Вывод.

    text_suffix

    Где пригодится:

    • Для удаления стандартных префиксов в именах файлов (например, log_ из log_error.txt). 
    • При очистке URL от протоколов (https:// превратится в site.com). 
    • Чтобы обработать данные с фиксированными окончаниями (например, удаление .txt из имени файла).

    Проверяйте телефон или email. Для валидации форматов телефона и email используйте простые регулярные выражения. Избегайте сложных шаблонов — лучше подключите библиотеку, например, email-validator

    Пример:

    import re
    email = "user@example.com"
    print(bool(re.match(r"[\w.-]+@[\w.-]+\.\w+", email)))

    Вывод.

    True

    Разделяйте строки с помощью partition(). Метод partition() разделяет строку на три части: до разделителя, сам разделитель и после. В отличие от split(), сохраняет разделитель. 

    Пример:

    s = "name=value"
    print(s.partition("="))

    Вывод:

    ('name', '=', 'value')

    Где пригодится: 

    • Для парсинга ключ-значения.
    • В обработке конфигурационных строк.

    Разбор

    Поделиться

    Скопировано
    0 комментариев
    Комментарии