summaryrefslogtreecommitdiff
path: root/PYTHON/STRING.md
diff options
context:
space:
mode:
Diffstat (limited to 'PYTHON/STRING.md')
-rw-r--r--PYTHON/STRING.md121
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