Как убрать табуляцию в python?
Вы можете использовать метод строки .replace()
Подписывайтесь на канал 👉@pythonofff
Вы можете использовать метод строки .replace()
lineWithTabulation = "\tLine with tabulation"
print(lineWithTabulation)
lineWithoutTabulation = lineWithTabulation.replace('\t', '')
print(lineWithoutTabulation)
# Вывод :
# Line with tabulation
# Line with tabulation
Подписывайтесь на канал 👉@pythonofff
Python Requests анализ запроса
При составлении запроса стоит иметь в виду, что перед его фактической отправкой на целевой сервер библиотека requests выполняет определенную подготовку. Подготовка запроса включает в себя такие вещи, как проверка заголовков и сериализация содержимого JSON.
Если открыть
Проверка PreparedRequest открывает доступ ко всей информации о выполняемом запросе. Это может быть пейлоад, URL, заголовки, аутентификация и многое другое.
Подписывайтесь на канал 👉@pythonofff
При составлении запроса стоит иметь в виду, что перед его фактической отправкой на целевой сервер библиотека requests выполняет определенную подготовку. Подготовка запроса включает в себя такие вещи, как проверка заголовков и сериализация содержимого JSON.
Если открыть
.request
, можно просмотреть PreparedRequest
.Проверка PreparedRequest открывает доступ ко всей информации о выполняемом запросе. Это может быть пейлоад, URL, заголовки, аутентификация и многое другое.
Подписывайтесь на канал 👉@pythonofff
Использование time.sleep() в threading
Python Logging Cookbook является хорошим примером использования
Здесь для создания двух потоков используется модуль Python threading. Также создается объект входа, что будет вводить threadName в stdout. Затем начинаются оба потока и инициируется цикл для каждого входа из главного потока. Для фиксирования пользователя используется KeyboardInterrupt при нажатии ^Ctrl+C.
Подписывайтесь на канал 👉@pythonofff
Python Logging Cookbook является хорошим примером использования
time.sleep()
. Модуль логирования logging является потоко-безопасным, поэтому в данном примере он будет полезнее, чем операторы print()
.Здесь для создания двух потоков используется модуль Python threading. Также создается объект входа, что будет вводить threadName в stdout. Затем начинаются оба потока и инициируется цикл для каждого входа из главного потока. Для фиксирования пользователя используется KeyboardInterrupt при нажатии ^Ctrl+C.
Подписывайтесь на канал 👉@pythonofff
Ядовитый питон. Пишем на Python простейшую малварь: локер, шифровальщик и вирус
Почему кому-то может прийти в голову писать малварь на Python? Мы сделаем это, чтобы изучить общие принципы вредоносостроения, а заодно ты попрактикуешься в использовании этого языка и сможешь применять полученные знания в других целях. К тому же малварь на Python таки попадается в дикой природе, и далеко не все антивирусы обращают на нее внимание.
Чаще всего Python применяют для создания бэкдоров в софте, чтобы загружать и исполнять любой код на зараженной машине. Так, в 2017 году сотрудники компании Dr.Web обнаружили Python.BackDoor.33, а 8 мая 2019 года был замечен Mac.BackDoor.Siggen.20. Другой троян — RAT Python крал пользовательские данные с зараженных устройств и использовал Telegram в качестве канала передачи данных.
Подписывайтесь на канал 👉@pythonofff
Почему кому-то может прийти в голову писать малварь на Python? Мы сделаем это, чтобы изучить общие принципы вредоносостроения, а заодно ты попрактикуешься в использовании этого языка и сможешь применять полученные знания в других целях. К тому же малварь на Python таки попадается в дикой природе, и далеко не все антивирусы обращают на нее внимание.
Чаще всего Python применяют для создания бэкдоров в софте, чтобы загружать и исполнять любой код на зараженной машине. Так, в 2017 году сотрудники компании Dr.Web обнаружили Python.BackDoor.33, а 8 мая 2019 года был замечен Mac.BackDoor.Siggen.20. Другой троян — RAT Python крал пользовательские данные с зараженных устройств и использовал Telegram в качестве канала передачи данных.
Подписывайтесь на канал 👉@pythonofff
Создаём свой контекстный менеджер
Привет, в четверг на канале вышел небольшой пост про контекстные менеджеры. Сейчас разберём, как их можно реализовать.
В любом контекстном менеджере должны быть определены методы
Метод
А более подробно мы рассказываем про эту тему в нашем курсе по продвинутым темам.
Подписывайтесь на канал 👉@pythonofff
Привет, в четверг на канале вышел небольшой пост про контекстные менеджеры. Сейчас разберём, как их можно реализовать.
В любом контекстном менеджере должны быть определены методы
__enter__
и __exit__
. В качестве примера создадим подобие уже существующего open.Метод
__enter__
вызывается автоматически и возвращает объект файла. После того, как блок with заканчивается, также вызывается метод __exit__
, который закрывает файл. А более подробно мы рассказываем про эту тему в нашем курсе по продвинутым темам.
Подписывайтесь на канал 👉@pythonofff
Использование Event.wait() в многопоточности Python.
Модуль
Причина, по которой здесь лучше использовать
Затем устанавливаются циклы для проверки, настроено ли событие event. Если это не так, тогда код выведет сообщение и немного подождет перед повторной проверкой. Для установки события можно воспользоваться комбинацией ^Ctrl+C. Как только событие установлено,
Подписывайтесь на канал 👉@pythonofff
Модуль
threading
предоставляет Event()
, которого можно использовать как time.sleep()
. Однако преимущество Event()
в том, что он более отзывчив. Причина в том, что когда событие установлено, программа сразу выходит из цикла. В Python с time.sleep()
коду надо будет подождать завершения вызова sleep()
до выхода из потока.Причина, по которой здесь лучше использовать
wait()
в том, что он не блокируется, в то время, как time.sleep()
блокируется. Это значит, что при использовании time.sleep()
вы заблокируете выполнение основного потока, пока тот будет ждать завершения вызова sleep(). wait()
решает данную проблему.Затем устанавливаются циклы для проверки, настроено ли событие event. Если это не так, тогда код выведет сообщение и немного подождет перед повторной проверкой. Для установки события можно воспользоваться комбинацией ^Ctrl+C. Как только событие установлено,
worker()
вернется, и цикл оборвется, завершив программуПодписывайтесь на канал 👉@pythonofff
Как перевернуть слово задом наперед в python?
Вы можете использовать [::-1] чтобы перевернуть слово задом наперед.
Подписывайтесь на канал 👉@pythonofff
Вы можете использовать [::-1] чтобы перевернуть слово задом наперед.
str_example = "тестовая строка как пример."
reversed_string = str_example[::-1]
# Вывод: .ремирп как акортс яавотсет
print(reversed_string)
Подписывайтесь на канал 👉@pythonofff
Библиотека Numpy
При создании массивом мы получаем тип ndarray.
Рассмотрим наиболее часты атрибуты (не методы!) применимые к массивам:
ndim - число измерений (чаще их называют "оси") массива.
shape - размеры массива, его форма. Это кортеж натуральных чисел, показывающий длину массива по каждой оси. Для матрицы из n строк и m столбов, shape будет (n,m). Число элементов кортежа shape равно ndim.
size - количество элементов массива. Очевидно, равно произведению всех элементов атрибута shape.
dtype - объект, описывающий тип элементов массива
itemsize - размер каждого элемента массива в байтах.
data - буфер, содержащий фактические элементы массива. Обычно мы не используем этот атрибут, так как обращаться к элементам массива проще всего с помощью индексов.
Подписывайтесь на канал 👉@pythonofff
При создании массивом мы получаем тип ndarray.
Рассмотрим наиболее часты атрибуты (не методы!) применимые к массивам:
ndim - число измерений (чаще их называют "оси") массива.
shape - размеры массива, его форма. Это кортеж натуральных чисел, показывающий длину массива по каждой оси. Для матрицы из n строк и m столбов, shape будет (n,m). Число элементов кортежа shape равно ndim.
size - количество элементов массива. Очевидно, равно произведению всех элементов атрибута shape.
dtype - объект, описывающий тип элементов массива
itemsize - размер каждого элемента массива в байтах.
data - буфер, содержащий фактические элементы массива. Обычно мы не используем этот атрибут, так как обращаться к элементам массива проще всего с помощью индексов.
Подписывайтесь на канал 👉@pythonofff
Хочешь уже перейти от теории к практике?
Всего за несколько часов ты можешь написать свою первую программу на Python без подготовки. Сомневаешься?
Убедись лично, что это реально, на специальном курсе для начинающих програмистов от GeekBrains — https://clc.to/yMBi4w
Ты сделаешь большой шаг вперед и сможешь уже более осознанно изучать материалы в сети и учиться дальше.
Дополнительно ты сможешь пройти курс по основам программирования, вспомнить или узнать азы программирования, порешать практические задания по математике и кодингу, научиться осваивать и запоминать тяжелый материал и многое другое.
Всё это в бесплатном курсе «Основы программирования». Мы открываем доступ к нашим платным программам, сегодня это абсолютно бесплатно. Переходи прямо сейчас, регистрируйся, заполняй анкету и приступай к написанию своей первой программы https://clc.to/yMBi4w
Всего за несколько часов ты можешь написать свою первую программу на Python без подготовки. Сомневаешься?
Убедись лично, что это реально, на специальном курсе для начинающих програмистов от GeekBrains — https://clc.to/yMBi4w
Ты сделаешь большой шаг вперед и сможешь уже более осознанно изучать материалы в сети и учиться дальше.
Дополнительно ты сможешь пройти курс по основам программирования, вспомнить или узнать азы программирования, порешать практические задания по математике и кодингу, научиться осваивать и запоминать тяжелый материал и многое другое.
Всё это в бесплатном курсе «Основы программирования». Мы открываем доступ к нашим платным программам, сегодня это абсолютно бесплатно. Переходи прямо сейчас, регистрируйся, заполняй анкету и приступай к написанию своей первой программы https://clc.to/yMBi4w
Как удалить пустые строки в списке на python?
Подписывайтесь на канал 👉@pythonofff
array = ['Stephen King', '', 'J. K. Rowling', '', 'Oliver Bowden']
filtred_array = list(filter(None, array))
print(filtred_array)
# Вывод : ['Stephen King', 'J. K. Rowling', 'Oliver Bowden']
Подписывайтесь на канал 👉@pythonofff
Продвинутая работа со списками
При работе со списками крайне полезно знать как правильно формировать срезы списка. В приложениях, активно использующих группы данных - срезы незаменимый инструмент.
В общей форме формирования среза выглядит следующим образом:
Комбинации параметров помогут достичь необходимого результата.
Подписывайтесь на канал 👉@pythonofff
При работе со списками крайне полезно знать как правильно формировать срезы списка. В приложениях, активно использующих группы данных - срезы незаменимый инструмент.
В общей форме формирования среза выглядит следующим образом:
list[start:end:step]
Комбинации параметров помогут достичь необходимого результата.
Подписывайтесь на канал 👉@pythonofff
Как удалить пустые строки из массива в python?
Пустые строки можно удалить их из массива с помощью функции filter().
Подписывайтесь на канал 👉@pythonofff
Пустые строки можно удалить их из массива с помощью функции filter().
arr = ["тест", "", "тест123"]
arr = list(filter(len, arr))
# Вывод: ['тест', 'тест123']
print(arr)
Подписывайтесь на канал 👉@pythonofff
all и any
Полезные функции, которые помогут узнать есть ли определенные значения в объекте.
all возвращает True, если все объекты равны True или удовлетворяют условию.
any в свою очередь делает то же самое, но возвращает True, если хотя бы один равен True.
Теперь нет необходимости перебирать списки, достаточно использовать данные функции.
Подписывайтесь на канал 👉@pythonofff
Полезные функции, которые помогут узнать есть ли определенные значения в объекте.
all возвращает True, если все объекты равны True или удовлетворяют условию.
any в свою очередь делает то же самое, но возвращает True, если хотя бы один равен True.
Теперь нет необходимости перебирать списки, достаточно использовать данные функции.
Подписывайтесь на канал 👉@pythonofff
Примеры использования модуля os в Python
Функция
Если вам нужно знать, какой путь вы в данный момент используете, для этой нужно вызвать
После этого мы изменили папки, при помощи
Подписывайтесь на канал 👉@pythonofff
os.chdir()
и os.getcwd()
Функция
os.chdir
позволяет нам вносить изменения в каталоге, который мы в данный момент используем в сессии.Если вам нужно знать, какой путь вы в данный момент используете, для этой нужно вызвать
os.getcwd()
. Указанный код демонстрирует нам, что мы открыли директорию по умолчанию в Пайтоне, после запуска данного кода в IDLE.После этого мы изменили папки, при помощи
os.chdir()
.Подписывайтесь на канал 👉@pythonofff
Создание функций на основе других с "замороженными" параметрами
Привет, сегодня поговорим про очень важную функцию
Данная функция принимает в качестве первого аргумента любую другую функцию, а дальше параметры, которые будут автоматически переданы в эту функцию при вызове уже новой функции, которую вернёт partial.
Например, можем создать функцию, которая умножает два числа, а потом "заморозить" один аргумент, как на картинке.
Подписывайтесь на канал 👉@pythonofff
Привет, сегодня поговорим про очень важную функцию
partial
из пакета functools
. Более подробно мы рассказываем про это в курсе, но сейчас дадим краткое описание работы.Данная функция принимает в качестве первого аргумента любую другую функцию, а дальше параметры, которые будут автоматически переданы в эту функцию при вызове уже новой функции, которую вернёт partial.
Например, можем создать функцию, которая умножает два числа, а потом "заморозить" один аргумент, как на картинке.
Подписывайтесь на канал 👉@pythonofff
Как обрабатывать исключения?
Обработка исключений в Пайтон – это очень просто. Потратим немного времени и напишем несколько примеров, которые их вызовут. Мы начнем с одной из самых элементарных проблем: деление на ноль.
Если мы обратимся к урокам элементарной математики, то вспомним, что на ноль делить нельзя. В Пайтоне данная операция вызовет ошибку, как мы можем видеть в примере выше. Чтобы поймать ошибку, мы завернем операцию в оператор
Подписывайтесь на канал 👉@pythonofff
Обработка исключений в Пайтон – это очень просто. Потратим немного времени и напишем несколько примеров, которые их вызовут. Мы начнем с одной из самых элементарных проблем: деление на ноль.
Если мы обратимся к урокам элементарной математики, то вспомним, что на ноль делить нельзя. В Пайтоне данная операция вызовет ошибку, как мы можем видеть в примере выше. Чтобы поймать ошибку, мы завернем операцию в оператор
try/except
.Подписывайтесь на канал 👉@pythonofff
Функция itertools.cycle
Напоминаю, что у нас всё ещё идёт набор на курс, который начинается уже в этот понедельник. А сейчас покажу вам кое-что интересное из курса.
В лекции, посвященной итераторам и генераторам, мы также показываем полезные функции из пакета itertools. К примеру, метод
А далее, например, можно воспользоваться
Подписывайтесь на канал 👉@pythonofff
Напоминаю, что у нас всё ещё идёт набор на курс, который начинается уже в этот понедельник. А сейчас покажу вам кое-что интересное из курса.
В лекции, посвященной итераторам и генераторам, мы также показываем полезные функции из пакета itertools. К примеру, метод
cycle
из последовательности ['red', 'white', 'blue']
генерирует повторяющуюся бесконечную.А далее, например, можно воспользоваться
islice
. Он возвращает конечный итератор из любой большой или даже бесконечной последовательности.Подписывайтесь на канал 👉@pythonofff
Класс collections.deque
Класс deque реализует двухконечную очередь, которая поддерживает добавление и удаление элементов с обоих концов в течение О(1) времени.
Объекты deque представлены в виде двусвязных списков, что дает им превосходную производительность для входящих и выходящих элементов, но при этом у него плохая производительность O(n) при работе со случайно принимаемыми элементами в середине очереди.
В связи с тем, что deque поддерживает вставку и удаление элементов одинаково хорошо, они могут поддерживать и очереди и стеки
Подписывайтесь на канал 👉@pythonofff
Класс deque реализует двухконечную очередь, которая поддерживает добавление и удаление элементов с обоих концов в течение О(1) времени.
Объекты deque представлены в виде двусвязных списков, что дает им превосходную производительность для входящих и выходящих элементов, но при этом у него плохая производительность O(n) при работе со случайно принимаемыми элементами в середине очереди.
В связи с тем, что deque поддерживает вставку и удаление элементов одинаково хорошо, они могут поддерживать и очереди и стеки
collections.deque
это отличное решение, если вы ищите структуру данных очереди в Python в стандартной библиотеке.Подписывайтесь на канал 👉@pythonofff
Простая обрезка изображения в Pillow
Обозначим область обрезки изображения с помощью кортежа box=(left, upper, right, lower).
Верхней левой координате соответствует (x, y) = (left, upper), а нижней правой — (x, y) = (right, lower). Область, которую нужно обрезать — left <= x <right и upper <= y <lower, а пиксели x = right и y = lower не включаются.
Не забудьте, что box используется вместе со скобками ().
Подписывайтесь на канал 👉@pythonofff
Обозначим область обрезки изображения с помощью кортежа box=(left, upper, right, lower).
Верхней левой координате соответствует (x, y) = (left, upper), а нижней правой — (x, y) = (right, lower). Область, которую нужно обрезать — left <= x <right и upper <= y <lower, а пиксели x = right и y = lower не включаются.
Не забудьте, что box используется вместе со скобками ().
Подписывайтесь на канал 👉@pythonofff
Делаем многоуровневый словарь плоским при помощи собственной рекурсивной функции
Быстрый поиск в Google приводит нас на StackOverflow. Первый же ответ предлагает рекурсивную функцию, которая перебирает словарь и возвращает «уплощенный» экземпляр. Вдохновившись этой функцией, давайте создадим немного более продвинутую версию.
Можем начать с
Подписывайтесь на канал 👉@pythonofff
Быстрый поиск в Google приводит нас на StackOverflow. Первый же ответ предлагает рекурсивную функцию, которая перебирает словарь и возвращает «уплощенный» экземпляр. Вдохновившись этой функцией, давайте создадим немного более продвинутую версию.
Можем начать с
type hinting
(явного указания типов). Это улучшит читаемость и сделает код типобезопасным.Подписывайтесь на канал 👉@pythonofff
Метод items()
Метод
Синтаксис
Данный метод не принимает никаких аргументов.
Приведем пример использования данной функции.
Объявлен словарь с именем products. Ключи содержат названия продуктов, а значения — их цены. Используем для нашего словаря метод items() и сохраним в другой переменной с именем itemlist, а затем выведем на экран.
Подписывайтесь на канал 👉@pythonofff
Метод
items()
используется для возврата списка кортежей с парами всех ключей и значений словаря.Синтаксис
:dictionary.items()
Данный метод не принимает никаких аргументов.
Приведем пример использования данной функции.
Объявлен словарь с именем products. Ключи содержат названия продуктов, а значения — их цены. Используем для нашего словаря метод items() и сохраним в другой переменной с именем itemlist, а затем выведем на экран.
Подписывайтесь на канал 👉@pythonofff