Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
develop:pyton:digit [2022/01/28 10:10] admin |
develop:pyton:digit [2022/12/01 06:42] (текущий) admin |
||
---|---|---|---|
Строка 99: | Строка 99: | ||
==== Форматирование строк ==== | ==== Форматирование строк ==== | ||
- | |||
- | |||
<code python> | <code python> | ||
< | < | ||
Строка 113: | Строка 111: | ||
# < | # < | ||
</ | </ | ||
+ | |||
Строка 124: | Строка 123: | ||
"{0} - {1} - {2}" | "{0} - {1} - {2}" | ||
</ | </ | ||
+ | |||
Строка 134: | Строка 134: | ||
a= 10; b= 12.3; s= " | a= 10; b= 12.3; s= " | ||
f"{a} - {b} - {s}" | f"{a} - {b} - {s}" | ||
+ | |||
+ | # Еще вариант вставки переменных в строку | ||
+ | print(" | ||
</ | </ | ||
+ | |||
Строка 140: | Строка 144: | ||
* **strip()** - удаляет указанные символы в начале и конце строки (если не указано то пробелы удаляет) | * **strip()** - удаляет указанные символы в начале и конце строки (если не указано то пробелы удаляет) | ||
* **l[r]strip()** - тоже самое только вначале (в конце) строки | * **l[r]strip()** - тоже самое только вначале (в конце) строки | ||
- | * **split(< | + | * **split(< |
* **rsplit()** - справа на лево | * **rsplit()** - справа на лево | ||
* **splitlines(< | * **splitlines(< | ||
- | * **join()** - собирает строку "< | + | * **join()** - собирает строку "< |
<code python> | <code python> | ||
" => " | " => " | ||
</ | </ | ||
+ | |||
==== Локаль ==== | ==== Локаль ==== | ||
- | **locate(< | + | **locate(< |
Модуль **locale**, устанавливать несколько раз.\\ | Модуль **locale**, устанавливать несколько раз.\\ | ||
Установить можно командой **locate.setlocate(< | Установить можно командой **locate.setlocate(< | ||
Строка 160: | Строка 165: | ||
* **locate.LC_NUMERIC** - для чисел | * **locate.LC_NUMERIC** - для чисел | ||
* **locate.LC_TIME** - для даты/ | * **locate.LC_TIME** - для даты/ | ||
+ | |||
==== Регистр символов ==== | ==== Регистр символов ==== | ||
**upper(), lower(), swapcase(), capitalize(), | **upper(), lower(), swapcase(), capitalize(), | ||
+ | |||
==== Функции и методы символов ==== | ==== Функции и методы символов ==== | ||
**chr(), ord()**- возвращает символ указанного кода, и код указанного символа\\ | **chr(), ord()**- возвращает символ указанного кода, и код указанного символа\\ | ||
+ | |||
==== Поиск и замена ==== | ==== Поиск и замена ==== | ||
- | * **find()** - возвращает номер позиции с которой начинается подстрока или -1 если ее нет, **чувствителен к регистру**. < | + | * **find()** - возвращает номер позиции с которой начинается подстрока или -1 если ее нет, **чувствителен к регистру**. < |
* **index()** - аналогично, | * **index()** - аналогично, | ||
* **rfind()/ | * **rfind()/ | ||
* **count()** - кол-во вхождений | * **count()** - кол-во вхождений | ||
* **startswith()/ | * **startswith()/ | ||
- | * **replace()** - возвращает новую строку. < | + | * **replace()** - возвращает новую строку. < |
* **translate(< | * **translate(< | ||
- | ==== Проверка типа ==== | ||
+ | ==== Проверка типа содержимого строки ==== | ||
+ | Есть рад функций типа **isalnum()**, | ||
- | <code python> | ||
- | </ | ||
- | |||
- | <code python> | ||
- | </ | ||
==== bytes ==== | ==== bytes ==== | ||
+ | Хранит в себе неизменяемую последовательность байт, от 0..255, можно хранить бинарные данные, | ||
+ | **bytearray**- впринципе тоже самое, но последовательность изменяемая\\ | ||
- | <code python> | ||
- | </ | ||
- | <code python> | ||
- | </ | ||
+ | ==== Преобразование ==== | ||
+ | Преобразовать объект в последовательность байтов (т.е. выполнить сериализацию/ | ||
+ | * **dump(< | ||
+ | * **load(< | ||
- | ==== bytearray ==== | ||
- | <code python> | + | ==== Шифрование ==== |
- | </ | + | Модуль **hashlib**\\ |
+ | Функции типа **md5()**, **sha1, | ||
- | <code python> | ||
- | </ | ||
- | ==== Преобразование ==== | + | ===== Регулярные выражения ===== |
+ | **import re**\\ | ||
+ | [[https:// | ||
- | <code python> | + | ==== Синтаксис ==== |
- | </ | + | Шаблон нужно компилировать ф-ей **compile()**\\ |
+ | :!: Символ **r** перед строкой позволяет не экранировать спец символы\\ | ||
<code python> | <code python> | ||
- | </code> | + | <Шаблон>= re.compile(< |
+ | p= re.compile(r" | ||
+ | if p.search(" | ||
- | ==== Шифрование ==== | + | # Либо |
+ | if re.search(" | ||
+ | |||
+ | </ | ||
+ | Модификаторы: | ||
+ | * **I (IGNORECASE)** - регистр | ||
+ | * **M (MULTILINE)** - текст с подстроками, | ||
+ | * **S (DOTALL)** - если указать, | ||
+ | * **X (VERBOSE)** - пробелы и перевод строки игнорируется | ||
+ | Экранирование слешем (\) или в квадратных скобках | ||
<code python> | <code python> | ||
+ | re.compile(r" | ||
+ | re.compile(r" | ||
</ | </ | ||
+ | Символы ^ и $ зависят от модификаторов (M или S), \A и \Z- аналогичные, | ||
<code python> | <code python> | ||
- | </ | + | p= re.compile(r" |
+ | p.findall(" | ||
+ | p= re.compile(r" | ||
+ | p.findall(" | ||
- | ===== Регулярные | + | p= re.compile(r" |
+ | p.findall(" | ||
- | ==== Синтаксис ==== | + | p= re.compile(r" |
+ | p.search(" | ||
+ | # Позиция для поиска | ||
+ | p= re.compile(r" | ||
+ | p.search(" | ||
- | <code python> | + | p= re.compile(r" |
+ | p.search(" | ||
</ | </ | ||
- | <code python> | + | Вместо символов можно использовать классы: |
- | </ | + | * **\d** - цифры |
+ | * **\w** - цифры и буква | ||
+ | * **\s** - любой пробельный символ | ||
+ | * **\D, \W, \S** - тоже самое, ток отрицание | ||
+ | * **\b** - начало слова | ||
+ | * **\B** - не начало слова | ||
+ | Число вхождений, | ||
+ | * **{n}, {n,}, {n,m}** - ровно **n**, **n** и более, от **n** до **m** | ||
+ | * ***** - ноль или более | ||
+ | * **+** - одно или более | ||
+ | * **?** - ни одного | ||
- | ==== Поиск первого совпадения ==== | + | Ищется самая длинная |
+ | Получить | ||
+ | <code python> | ||
+ | s= '< | ||
+ | p= re.compile(r"< | ||
+ | p.findall(s) | ||
+ | >> ['< | ||
+ | p= re.compile(r"< | ||
+ | p.findall(s) | ||
+ | >> ['< | ||
- | <code python> | + | p= re.compile(r" |
+ | p.findall(s) | ||
+ | >> [' | ||
</ | </ | ||
- | <code python> | ||
- | </ | ||
- | + | Скобки **группируют фрагменты**, | |
- | ==== Поиск всех совпадений ==== | + | Например (?:tx) найдет и " |
+ | К найденному фрагменту можно обратится, | ||
+ | Например получим текст между одинаковыми тегами: | ||
<code python> | <code python> | ||
- | </code> | + | s= '< |
+ | p= re.compile(r"< | ||
+ | p.findall(s) | ||
+ | >> [(' | ||
- | <code python> | + | # ?P<name> - для задания имени фрагменту |
+ | s= 'eed 34 dc 3455' | ||
+ | p= re.compile(r" | ||
+ | p.search(s) | ||
+ | p.group(' | ||
+ | >> ' | ||
</ | </ | ||
- | ==== Замена в строке | + | ==== Поиск первого совпадения ==== |
+ | Для этого есть следующе методы (и функции их аналоги): | ||
+ | * **match()** - соответствие с началом строки | ||
+ | * **search()** - соответствие с любой частью строки | ||
+ | * **fullmatch()** - соответствие со всей строкой | ||
+ | |||
+ | Объект **Match** содержит следующие свойства и методы: | ||
+ | * **re** - ссылка на скомпилированный шаблон, | ||
+ | * **groups (groupindex)** - кол-во групп в шаблоне (перечисление в словаре) | ||
+ | * **pattern** - строка с рег выражением | ||
+ | * **flags** - комбинация флагов | ||
+ | * **string** - строка .. оО | ||
+ | * **pos (endpos)** - начальная/ | ||
+ | * **lastindex (lastgroup)** - пар-ры последней группы | ||
+ | * **group (groups, groupdict)** - фрагменты, | ||
+ | * **start (end)** - начало/ | ||
+ | * **span** - кортеж с начальным и конечным индексами фрагмента | ||
+ | * **expand** - замена в строке | ||
- | <code python> | + | ==== Поиск всех совпадений ==== |
- | </ | + | Это так же функции и методы: |
+ | * **findall()** - возвращает список (строк или кортежей), | ||
+ | * **finditer()** - возвращает итератор, | ||
- | <code python> | ||
- | </ | ||
+ | ==== Замена в строке ==== | ||
+ | Метод **sub()** ищет все совпадения и заменяет указанным значением\\ | ||
+ | sub[< | ||
- | ==== Функции и методы ==== | + | Внутри |
+ | <code python> | ||
+ | # Поменяем два тега местами | ||
+ | p= re.compile(r"< | ||
+ | print(p.sub(r"< | ||
+ | print(p.sub(r"< | ||
+ | print(p.sub(r"< | ||
+ | # Функция для замены | ||
+ | def repl(match): | ||
+ | x= int(match.group(0)) | ||
+ | x += 10 | ||
+ | return " | ||
- | <code python> | + | p= re.compile(r" |
+ | print(p.sub(repl, | ||
</ | </ | ||
- | <code python> | ||
- | </ | ||
+ | ==== Прочие функции и методы ==== | ||
+ | * **split()** - разбивка строки | ||
+ | * **escape()** - экранирует все символы (re.escape(r" | ||
+ | * **purge()** - очистка кэша рег выражений | ||