Строки (str) в языке Python: полное руководство

Раздел: Основы Python -> Основные типы данных Python

Тип данных str (строка) в Python представляет собой неизменяемую последовательность символов Unicode. Строки используются для хранения и обработки текстовой информации. Они поддерживают множество встроенных методов и операций, что делает работу с текстом удобной и эффективной.

Основные операции со строками

Наиболее эффективным решением для форматирования строк в современном Python является использование f-строк. Они обеспечивают читаемость, производительность и поддержку выражений. Для манипуляции строками рекомендуется применять встроенные методы, такие как .lower(), .upper(), .split(), .join(), .strip() и другие.

name = "Alice"
age = 30
message = f"Привет, {name}. Тебе {age} лет."
print(message)

Str python (тип данных str в python)

Привет, Alice. Тебе 30 лет.

Str bool python (типы str и bool в python)

Как объединить несколько строк в одну?

Вариант 1: конкатенация через +

s1 = "Hello"
s2 = "World"
result = s1 + ", " + s2 + "!"

Проблема: при многократной конкатенации в цикле (например, result += part) создаются промежуточные объекты строк, что снижает производительность. Решение: использовать метод .join(), который принимает список строк и объединяет их с указанным разделителем.

Вариант 2: метод .join()

words = ["Hello", "World"]
result = ", ".join(words) + "!"

Метод .join() эффективен, так как заранее вычисляет необходимый размер строки.

Как вставить значения переменных в строку?

Вариант 1: f-строки (рекомендуемый)

x = 10
y = 20
print(f"Сумма {x} и {y} равна {x + y}.")

Вариант 2: метод .format()

print("Сумма {} и {} равна {}.".format(x, y, x + y))

Проблема: при использовании .format() с большим количеством аргументов код становится менее читаемым. Решение: использовать именованные аргументы или перейти на f-строки.

Как создать строку с переносами и отступами?

Тройные кавычки ("""...""" или '''...''') позволяют задавать многострочные строки.

long_text = """Это многострочная строка.
Она может содержать несколько строк текста.
Отступы и переносы сохраняются."""

Проблема: если внутри текста есть кавычки, их нужно экранировать или использовать разные типы кавычек. Решение: использовать raw-строки или комбинировать кавычки.

Как задать строку, в которой не обрабатываются escape-последовательности?

Сырые строки (raw strings) записываются с префиксом r или R.

raw_path = r"C:\Users\Name\Documents"
print(raw_path)  # C:\Users\Name\Documents

Проблема: при использовании обычной строки обратная косая черта интерпретируется как escape. Решение: использовать raw-строки или дублировать обратную косую черту.

Как преобразовать число или другой объект в строку?

Функция str() возвращает строковое представление объекта.

number = 123
text = str(number)
print(text, type(text))  # 123 

Проблема: при конкатенации строки и числа без преобразования возникает TypeError. Решение: использовать str() или f-строки.

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

Пример
# Проверка типа символов
print("abc123".isalnum())   # True
print("123".isdigit())      # True
print("123".isdecimal())    # True
print("Ⅷ".isdecimal())     # False (римская цифра)
print("Ⅷ".isnumeric())     # True
print("hello".isalpha())    # True
True
True
True
False
True
True
Пример
# Замена символов через maketrans и translate
table = str.maketrans("abc", "123")
original = "a b c"
print(original.translate(table))  # "1 2 3"
1 2 3
Пример
# Срез с шагом (разворот строки)
s = "Python"
print(s[::-1])  # "nohtyP"
nohtyP
Пример
# Разделение строки по символам переноса с сохранением разделителей (splitlines)
text = "line1\nline2\r\nline3"
print(text.splitlines(keepends=True))  # ['line1\n', 'line2\r\n', 'line3']
['line1\n', 'line2\r\n', 'line3']
Пример
# Поиск и разделение с помощью partition()
email = "user@example.com"
left, sep, right = email.partition("@")
print(left, right)  # user example.com
user example.com
Пример
# f-строки с вызовом метода и условным выражением
name = "alice"
print(f"Имя с заглавной: {name.capitalize()}")
print(f"Длина имени: {len(name)}")

age = 25
print(f"{name} {'совершеннолетний' if age >= 18 else 'несовершеннолетний'}")
Имя с заглавной: Alice
Длина имени: 5
alice совершеннолетний
Пример
# Выравнивание текста	
s = "Python"
print(s.center(10, '-'))  # --Python--
print(s.ljust(10, '*'))   # Python****
print(s.rjust(10, '*'))   # ****Python
print("42".zfill(5))      # 00042
--Python--
Python****
****Python
00042

Тип данных str в Python - comments

En
Str python (python)