Строки (str) в языке 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