Привет! Сегодня погрузимся в магию работы с текстами на Python и разберём сразу два популярных инструмента для обработки естественного языка — NLTK и spaCy. Даже если вы только начали путь питониста, с этими библиотеками вы сможете анализировать тексты, искать ключевые слова, определять части речи и делать ещё массу интересного.
### NLTK — классика жанра
NLTK (Natural Language Toolkit) часто называют «швейцарским ножом» для языкового анализа. Несмотря на почтенный возраст, NLTK актуален благодаря богатейшему набору функций и огромному количеству встроенных корпусов (наборов текстов для анализа).
Разберём простой пример — разбор текста на предложения и слова:
NLTK также умеет определять части речи:
### spaCy — быстрый и современный
Если вам нужен максимально быстрый и удобный инструмент — берите spaCy. Он из коробки умеет извлекать сущности, токенизировать текст, разбивать слова по частям речи и много чего ещё, причём делает это молниеносно.
Пример выделения именованных сущностей (людей, компаний, городов):
Ещё spaCy великолепно разбирается с лемматизацией (приведение слова к базовой форме):
### Что выбрать?
NLTK — хороший выбор для обучения, экспериментов и когда нужен гибкий доступ к лингвистическим инструментам. spaCy — чемпион по скорости и простоте для реальных приложений. К тому же их можно комбинировать: например, токенизацию делать в spaCy, а сложную работу с корпусами доверить NLTK.
С текстами в Python можно творить чудеса, и знакомство с этими библиотеками — отличное начало. Удачной практики!
— Иван
### NLTK — классика жанра
NLTK (Natural Language Toolkit) часто называют «швейцарским ножом» для языкового анализа. Несмотря на почтенный возраст, NLTK актуален благодаря богатейшему набору функций и огромному количеству встроенных корпусов (наборов текстов для анализа).
Разберём простой пример — разбор текста на предложения и слова:
import nltk
nltk.download('punkt')
text = "Python is great. Natural Language Processing is fascinating!"
sentences = nltk.sent_tokenize(text)
words = [nltk.word_tokenize(sentence) for sentence in sentences]
print(sentences)
print(words)
NLTK также умеет определять части речи:
nltk.download('averaged_perceptron_tagger')
tokens = nltk.word_tokenize("SpaCy is faster than NLTK in many tasks.")
pos_tags = nltk.pos_tag(tokens)
print(pos_tags)
### spaCy — быстрый и современный
Если вам нужен максимально быстрый и удобный инструмент — берите spaCy. Он из коробки умеет извлекать сущности, токенизировать текст, разбивать слова по частям речи и много чего ещё, причём делает это молниеносно.
Пример выделения именованных сущностей (людей, компаний, городов):
import spacy
nlp = spacy.load("en_core_web_sm")
doc = nlp("Apple is looking at buying U.K. startup for $1 billion")
for ent in doc.ents:
print(ent.text, ent.label_)
Ещё spaCy великолепно разбирается с лемматизацией (приведение слова к базовой форме):
for token in doc:
print(token.text, token.lemma_)
### Что выбрать?
NLTK — хороший выбор для обучения, экспериментов и когда нужен гибкий доступ к лингвистическим инструментам. spaCy — чемпион по скорости и простоте для реальных приложений. К тому же их можно комбинировать: например, токенизацию делать в spaCy, а сложную работу с корпусами доверить NLTK.
С текстами в Python можно творить чудеса, и знакомство с этими библиотеками — отличное начало. Удачной практики!
— Иван
👍1
Привет, друзья! С вами Иван, и сегодня я расскажу о мощном модуле shutil, который позволяет управлять файлами и папками в Python буквально в пару строк. Готовы почувствовать себя повелителями файловой системы? Тогда поехали!
### Копирование папок и файлов
Если вы хотите скопировать файл — используйте
Стоит учитывать:
А вот просто скопировать файл – элементарно:
### Перемещение объектов
Иногда нужно не копировать, а переместить файл или целую папку – тут поможет
Путь назначения может быть и на другом диске! Всё работает и для Unix, и для Windows.
### Удаление папок
Удалять папки вручную – не вариант, если их много. В этом случае
ВАЖНО: Эта команда не спрашивает подтверждения — всё удаляется навсегда, так что лучше дважды проверять путь, чтобы затем не восстанавливать данные слезами.
### Быстрый итого
- copy — копирует файлы.
- copytree — копирует папки (и их содержимое).
- move — перемещает любые объекты файловой системы.
- rmtree — безжалостно удаляет целые папки.
shutil — незаменимый инструмент для данных админ-скриптов, резервного копирования или просто наведения порядка у себя на диске с помощью Python. Простота и мощь – вот почему я обожаю этот модуль!
Увидимся в следующих постах, где разберём ещё больше секретных приемов из арсенала Python!
### Копирование папок и файлов
Если вы хотите скопировать файл — используйте
shutil.copy
, а вот для папок, в том числе с вложенными подкаталогами, пригодится shutil.copytree
:import shutil
# Копирование папки с содержимым
shutil.copytree('source_folder', 'destination_folder')
Стоит учитывать:
destination_folder
не должен существовать, иначе будет исключение.А вот просто скопировать файл – элементарно:
shutil.copy('original.txt', 'copy.txt')
### Перемещение объектов
Иногда нужно не копировать, а переместить файл или целую папку – тут поможет
shutil.move
. Причём модуль сам определит, файл вы перемещаете или папку.shutil.move('old_folder', 'new_folder_location/old_folder')
Путь назначения может быть и на другом диске! Всё работает и для Unix, и для Windows.
### Удаление папок
Удалять папки вручную – не вариант, если их много. В этом случае
shutil.rmtree
сотрёт весь каталог с файлами и подпапками:shutil.rmtree('unnecessary_folder')
ВАЖНО: Эта команда не спрашивает подтверждения — всё удаляется навсегда, так что лучше дважды проверять путь, чтобы затем не восстанавливать данные слезами.
### Быстрый итого
- copy — копирует файлы.
- copytree — копирует папки (и их содержимое).
- move — перемещает любые объекты файловой системы.
- rmtree — безжалостно удаляет целые папки.
shutil — незаменимый инструмент для данных админ-скриптов, резервного копирования или просто наведения порядка у себя на диске с помощью Python. Простота и мощь – вот почему я обожаю этот модуль!
Увидимся в следующих постах, где разберём ещё больше секретных приемов из арсенала Python!
👍1
Привет! С вами Иван, и сегодня мы поговорим о том, как легко и просто реализовать структуру данных “очередь” и “стек” с помощью модуля
## Почему именно deque?
В Python списки (
## Реализуем очередь
Очередь — это структура данных, работающая по принципу FIFO (First-In, First-Out, “первым пришёл — первым ушёл”). Давайте посмотрим, как можно буквально в пару строк сделать простейшую очередь:
Здесь всё интуитивно ясно:
## А теперь стек
А вот стек — это LIFO (Last-In, First-Out, “последним пришёл — первым ушёл”). Реализуется он не менее просто:
Для стека используйте методы
## Немного тонкостей
-
- Можно задавать максимальную длину очереди (
-
## Итого
Использовать стандартный модуль collections и класс deque — отличный способ писать лаконичный, быстрый и читаемый код для очередей и стеков. Основная прелесть — минимум кода и максимум эффективности, а всё самое “магическое” спрятано внутри самой стандартной библиотеки Python.
Экспериментируйте с
collections
, а точнее — с использованием класса deque
. Если вдруг вы еще не знакомы с этим классом, самое время это исправить!## Почему именно deque?
В Python списки (
list
) отлично подходят для многих задач, но если вы часто добавляете и убираете элементы с начала, производительность может заметно пострадать. К счастью, есть deque
(double-ended queue)! Это двусторонняя очередь, которая реализована на основе связанного списка: вставка и удаление элементов с любого конца происходят за константное время.## Реализуем очередь
Очередь — это структура данных, работающая по принципу FIFO (First-In, First-Out, “первым пришёл — первым ушёл”). Давайте посмотрим, как можно буквально в пару строк сделать простейшую очередь:
from collections import deque
queue = deque()
# Добавляем элементы в конец очереди
queue.append('apple')
queue.append('banana')
queue.append('cherry')
# Удаляем элемент из начала очереди
first = queue.popleft()
print(first) # apple
Здесь всё интуитивно ясно:
append
добавляет элемент в конец, а popleft
вытаскивает первый элемент.## А теперь стек
А вот стек — это LIFO (Last-In, First-Out, “последним пришёл — первым ушёл”). Реализуется он не менее просто:
from collections import deque
stack = deque()
# Добавляем элементы на вершину стека
stack.append('red')
stack.append('green')
stack.append('blue')
# Удаляем элемент с вершины стека
top = stack.pop()
print(top) # blue
Для стека используйте методы
append
и pop
. Всё, больше ничего не нужно!## Немного тонкостей
-
deque
можно использовать и как очередь, и как стек — просто используйте нужные методы: для очереди append
и popleft
, для стека — append
и pop
.- Можно задавать максимальную длину очереди (
maxlen
), и тогда при переполнении старые элементы будут автоматически удаляться.-
deque
поддерживает перебор циклом, а также методы, похожие на обычные списки: extend
, remove
, count
и другие.## Итого
Использовать стандартный модуль collections и класс deque — отличный способ писать лаконичный, быстрый и читаемый код для очередей и стеков. Основная прелесть — минимум кода и максимум эффективности, а всё самое “магическое” спрятано внутри самой стандартной библиотеки Python.
Экспериментируйте с
deque
— и почувствуйте разницу!Привет! Я — Иван, и сегодня мы напишем простую, но очень полезную программу: учёт расходов на Python. Вы удивитесь, как здорово совмещаются такие модули, как
Первый шаг — научимся сохранять расходы в файле CSV. Это позволит работать с данными в удобном табличном виде.
Теперь, когда у нас есть таблица расходов, пора научиться их читать и анализировать. Допустим, мы хотим подбить итог по категориям и узнать, куда уходит основная часть бюджета.
А что если визуализировать эти данные? С этим справится всемогущий
Итак, на базе трёх коротких функций мы получаем персональный трекер расходов: сохраняем их, анализируем и наглядно видим, что съедает наш бюджет.
Советую поэкспериментировать: добавить даты, поиск по месяцам, экспорт в другие форматы. Python + CSV + matplotlib — это мощный, гибкий и, главное, простой старт для любого, кто хочет автоматизировать свою бытовую жизнь!
csv
и matplotlib
, чтобы автоматизировать ваши финансовые записи и даже видеть их на графике!Первый шаг — научимся сохранять расходы в файле CSV. Это позволит работать с данными в удобном табличном виде.
import csv
def add_expense(category, amount):
with open('expenses.csv', 'a', newline='') as file:
writer = csv.writer(file)
writer.writerow([category, amount])
# Пример использования:
add_expense('Food', 520)
add_expense('Transport', 300)
Теперь, когда у нас есть таблица расходов, пора научиться их читать и анализировать. Допустим, мы хотим подбить итог по категориям и узнать, куда уходит основная часть бюджета.
def read_expenses():
expenses = {}
with open('expenses.csv', newline='') as file:
reader = csv.reader(file)
for row in reader:
category, amount = row
expenses[category] = expenses.get(category, 0) + float(amount)
return expenses
# Выведем сводку
expenses_summary = read_expenses()
for category, total in expenses_summary.items():
print(f"{category}: {total}")
А что если визуализировать эти данные? С этим справится всемогущий
matplotlib
. Построим круговую диаграмму расходов!import matplotlib.pyplot as plt
def plot_expenses(expenses):
categories = list(expenses.keys())
amounts = list(expenses.values())
plt.pie(amounts, labels=categories, autopct='%1.1f%%')
plt.title('Expense Breakdown')
plt.show()
# Вызов функции для построения графика:
plot_expenses(expenses_summary)
Итак, на базе трёх коротких функций мы получаем персональный трекер расходов: сохраняем их, анализируем и наглядно видим, что съедает наш бюджет.
Советую поэкспериментировать: добавить даты, поиск по месяцам, экспорт в другие форматы. Python + CSV + matplotlib — это мощный, гибкий и, главное, простой старт для любого, кто хочет автоматизировать свою бытовую жизнь!