1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
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 (но пока в статусе "отложен")
Следим за развитием 😊
|