Python: работа со строками - от простого к сложному
Основные методы преобразования строк в Python
Наиболее эффективное решение: f-строки (f-strings)
Для вставки значений внутрь строки наилучшим образом подходят f-строки, появившиеся в Python 3.6. Они обеспечивают высокую производительность и отличную читаемость. Внутри фигурных скобок можно размещать переменные и даже выражения.
name = "Елена"
age = 28
result = f"Меня зовут {name}, мне {age} лет."Python strip (метод strip в python)
"Меня зовут Елена, мне 28 лет."
Python повторить строку (повторение строки в python)
{{ и }}. При использовании сложных выражений внутри скобок может возникнуть ошибка синтаксиса. Для многострочных выражений рекомендуется выносить их за пределы строки.Как подставить значения в строку с помощью метода format?
Метод str.format() позволяет заменить плейсхолдеры {} на переданные аргументы. Доступны нумерованные и именованные поля.
template = "Имя: {}, возраст: {}"
text = template.format("Олег", 35)
Tuple в str python (преобразование кортежа в строку в python)
"Имя: Олег, возраст: 35"
Python объект в строку (преобразование объекта в строку в python)
IndexError. Для сложных форматирований (например, выравнивания) синтаксис может быть громоздким.Как изменить регистр всех букв в строке?
Для преобразования регистра применяются методы lower(), upper(), capitalize(), title() и swapcase().
text = "PyThOn 3.0"
print(text.lower())
print(text.upper())
print(text.capitalize())
print(text.title())
print(text.swapcase())Python convert string (преобразование строк в python)
python 3.0 PYTHON 3.0 Python 3.0 Python 3.0 pYtHoN 3.0
Python str to bytes (преобразование строки в байты в python)
lower() не изменяет символ. Рекомендуется использовать casefold() для более агрессивного приведения к нижнему регистру. capitalize() делает заглавной только первую букву, остальные переводит в нижний регистр.Как удалить пробелы в начале и конце строки?
Методы strip(), lstrip() и rstrip() удаляют пробельные символы (и другие, если передать аргумент).
line = " пробелы вокруг "
print(repr(line.strip()))
print(repr(line.lstrip()))
print(repr(line.rstrip()))функция разделить python (разделение строки на список в python)
'пробелы вокруг' 'пробелы вокруг ' ' пробелы вокруг'
вывести первый символ строки python (вывести первый символ строки в python)
line.strip(".,! "). Без аргумента удаляются стандартные пробельные символы (пробел, табуляция, перевод строки).Как разбить строку на части и снова соединить?
Метод split() делит строку по указанному разделителю на список. Метод join() объединяет элементы списка в строку с заданным разделителем.
sentence = "яблоко, банан, вишня"
fruits = sentence.split(", ")
print(fruits)
rejoined = " и ".join(fruits)
print(rejoined)вывести символ строки python (вывод символа строки в python)
['яблоко', 'банан', 'вишня'] яблоко и банан и вишня
вывести длину строки python (вывести длину строки в python)
split() без аргумента делит по любым пробельным символам, игнорируя начальные и конечные пробелы, а также множественные пробелы. split(' ') делит только по одиночному пробелу, оставляя пустые строки при нескольких пробелах. join() может использоваться только для списка строк; если список содержит числа, их нужно предварительно преобразовать в строки.Как заменить одни символы или подстроки на другие?
Метод replace() заменяет все вхождения подстроки на новую. Третий аргумент count ограничивает количество замен.
text = "один, два, один, три"
new_text = text.replace("один", "раз", 1)
print(new_text)вывести элемент строки python (вывод конкретного символа строки по индексу в python)
раз, два, один, три
задания на строки python (задания на строки в python)
count будут заменены все вхождения. Для сложных регулярных замен лучше использовать модуль re. Метод не изменяет исходную строку, а возвращает новую.Как преобразовать строку в число или логическое значение?
Функции int(), float() и bool() преобразуют строку в соответствующий тип. Важно помнить, что bool() возвращает True для любой непустой строки.
s = "123"
n = int(s)
print(n, type(n))
s2 = "3.14"
f = float(s2)
print(f, type(f))
s3 = "False"
b = bool(s3) # True, так как строка непустая
print(b)
s4 = ""
b2 = bool(s4) # False
print(b2)
s5 = "abc"
try:
n2 = int(s5)
except ValueError as e:
print("Ошибка:", e)замена символов python (замена символов в строке python)
1233.14 True False Ошибка: invalid literal for int() with base 10: 'abc'
Python первое слово в строке (извлечение первого слова из строки в python)
ValueError. Для безопасного преобразования можно использовать try/except или проверить строку методами isdigit(), isnumeric() (но они не обрабатывают дробные числа). bool("False") даёт True, поэтому для явного преобразования нужно сравнивать с "True" или использовать ast.literal_eval.Как перекодировать строку в байты и обратно?
Методы encode() и decode() преобразуют строку в байты и наоборот с указанием кодировки (по умолчанию UTF-8).
text = "Привет, мир!"
bytes_utf8 = text.encode("utf-8")
print(bytes_utf8)
decoded = bytes_utf8.decode("utf-8")
print(decoded)
try:
bytes_latin = text.encode("latin-1")
except UnicodeEncodeError as e:
print("Ошибка:", e)Python последнее слово в строке (извлечение последнего слова из строки в python)
b'\xd0\x9f\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82, \xd0\xbc\xd0\xb8\xd1\x80!' Привет, мир! Ошибка: 'latin-1' codec can't encode characters in position 0-5: ordinal not in range(256)
UnicodeEncodeError. Можно использовать аргумент errors='ignore' или 'replace' для обработки ошибок. Декодирование с неправильной кодировкой вызывает UnicodeDecodeError.Расширенные примеры преобразования строк в Python
Дополнительные способы и редкие случаи использования
Регулярные выражения для замены
import re
result = re.sub(r'\d+', 'N', 'abc123def456')
print(result)abcNdefN
Преобразование строки в дату и обратно
from datetime import datetime
date_str = "2023-01-15"
dt = datetime.strptime(date_str, "%Y-%m-%d")
print(dt)
formatted = dt.strftime("%d.%m.%Y")
print(formatted)2023-01-15 00:00:00 15.01.2023
Кодирование в Base64
import base64
encoded = base64.b64encode(b"Hello, World!")
print(encoded)
decoded = base64.b64decode(encoded).decode()
print(decoded)b'SGVsbG8sIFdvcmxkIQ==' Hello, World!
Список кодов символов
codes = [ord(c) for c in "Python"]
print(codes)
chars = ''.join(chr(code) for code in codes)
print(chars)[80, 121, 116, 104, 111, 110] Python
Использование Template для безопасной подстановки
from string import Template
t = Template("Hello, $name!")
result = t.substitute(name="World")
print(result)Hello, World!
Преобразование hex строки в байты
hex_data = "48656c6c6f"
byte_data = bytes.fromhex(hex_data)
print(byte_data)
back_to_hex = byte_data.hex()
print(back_to_hex)b'Hello' 48656c6c6f
Форматирование с выравниванием и точностью
left = "{:<10}".format("left")
right = "{:>10}".format("right")
center = "{:^10}".format("center")
number = "{:.2f}".format(3.14159)
print(repr(left), repr(right), repr(center), repr(number))'left ' ' right' ' center ' '3.14'
Безопасное преобразование строки в словарь
import json
json_str = '{"name": "Анна", "age": 30}'
data = json.loads(json_str)
print(data)
print(type(data)){'name': 'Анна', 'age': 30}
<class 'dict'>Разделение с помощью partition и rpartition
text = "яблоко:банан:вишня"
part = text.partition(":")
print(part)
rpart = text.rpartition(":")
print(rpart)('яблоко', ':', 'банан:вишня')
('яблоко:банан', ':', 'вишня')Дополнение строки нулями (zfill)
num_str = "42"
padded = num_str.zfill(5)
print(padded)00042