```python my_str = 'Vlapa' print(len(my_str)) # 5 print(my_str[0]) # V print(my_str[2:5]) # apa my_str.upper() my_str.replace('__old', '__new') # само значение не изменяется ! my_str.count('__x') # считает кол-во вхождений ``` ![[Снимок экрана 2025-02-11 в 01.15.10.png]] Создать 1000 папок со случайными именами: ![[Снимок экрана 2025-02-11 в 01.17.25.png]] **Работа с регистрами** ![[telegram-cloud-photo-size-4-5863854399405801203-w.jpg]] _Строки в Python имеют свойство регистра — прописные и строчные буквы считаются разными символами._ Для преобразования регистра используются методы строк: str.upper() — преобразует строку к верхнему регистру. str.lower() — преобразует строку к нижнему регистру. str.swapcase() — меняет регистр каждого символа на противоположный. str.capitalize() — делает первую букву заглавной, остальные строчными. Регистр конкретного символа можно проверить в строке методами: str.isupper() — проверка на заглавный регистр. str.islower() — проверка на строчный регистр. Регистр важно учитывать при сравнении строк на равенство. ### Полезные строковые методы 1️⃣ .upper() **– переводит строку в ВЕРХНИЙ РЕГИСТР** text = "hello world" print(text.upper())  # "HELLO WORLD" 2️⃣ .lower() **– переводит строку в нижний регистр** text = "HELLO WORLD" print(text.lower())  # "hello world" 3️⃣ .strip() **– удаляет пробелы и символы переноса с начала и конца строки** text = "  hello world  " print(text.strip())  # "hello world" Можно указать символы, которые нужно удалить: text = "##hello##" print(text.strip("#"))  # "hello" 4️⃣ .replace(old, new) **– заменяет подстроку в строке** text = "Hello, world!" print(text.replace("world", "Python"))  # "Hello, Python!" 5️⃣ .split(separator) **– разделяет строку по разделителю и возвращает список** text = "apple,banana,orange" print(text.split(","))  # ['apple', 'banana', 'orange'] Если разделитель не указан, удаляются пробелы: text = "Hello   world" print(text.split())  # ['Hello', 'world'] Эти методы часто используются вместе, например: text = "  hello, world!  " clean_text = text.strip().replace(",", "").upper() print(clean_text)  # "HELLO WORLD" ### f-строки с выражениями в форматировании Да, ты можешь использовать **выражения прямо внутри f-строк**! ```python value = 3.14159 print(f"Округлено: {value:.2f}")      # Округлит до 2 знаков print(f"В квадрате: {value**2:.1f}")  # Сразу вычисляет и форматирует ``` 🧠 **А можно и условие:** ```python name = None print(f"Привет, {name or 'гость'}!") ``` 🗣 **При генерации отчётов, логов, CLI-вывода, шаблонов — везде, где важна читаемость и компактность.** PEP 750 вводят t-строки — это как f"..." но: - интерполяция ограничена и контролируема; - поддерживается строгое соответствие шаблону; - можно передавать переменные явно, предотвращая **SQL-инъекции** и XSS. Для чего? Для того, чтобы писать shell-команды, SQL, HTML и т.д. без риска инъекций и без ручного экранирования **Пример**: ```PYTHON from string.templatelib import Template name = "World" template: Template = t"Hello, {name}!" safe_output = html(template) ``` Здесь html() — это функция, которая принимает объект Template и возвращает безопасную строку, экранируя потенциально опасные вставки PEP 787 предлагает добавить это прямо в subprocess и shlex (но пока в статусе "отложен") Следим за развитием 😊