diff options
Diffstat (limited to 'PYTHON/STRING.md')
| -rw-r--r-- | PYTHON/STRING.md | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/PYTHON/STRING.md b/PYTHON/STRING.md new file mode 100644 index 0000000..6e7d4f9 --- /dev/null +++ b/PYTHON/STRING.md @@ -0,0 +1,121 @@ +```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 (но пока в статусе "отложен") + +Следим за развитием 😊
\ No newline at end of file |
