Posts

Python CSV cleaner

Build a simple CSV cleaner web app with Streamlit + Pandas Meta description suggestion: Turn a small Pandas cleaning script into a Streamlit web app: upload any CSV, remove empty rows and duplicates, preview the result, and download a cleaned file in seconds. Why I built this CSV files are everywhere. They’re also a little chaotic on a good day. You’ll open one and find blank rows, repeated records, odd spacing, or columns that look fine until your import tool refuses them. I wanted a tiny “do the obvious cleanup” button that works for any CSV: upload → clean → preview → download. No hunting for the right Excel filter, no redoing the same steps every week. What this app does The app gives you a few practical cleaning options that cover the most common CSV headaches: Remove empty rows (rows where every value is blank) Remove duplicate rows (or duplicates based on...

A Quick Python Script to Extract Emails From a Web Page

A Quick Python Script to Extract Emails From a Web Page Sometimes you land on a website and think: I know there’s a contact email here somewhere… but it’s buried in a footer, hidden on an “About” page, or lost in a long block of text. If you do research, vendor reviews, outreach, or you’re just trying to save time, copying and pasting around a page gets old fast. This short Python script automates that step. You give it a URL, it downloads the page, pulls out the readable text, then returns any email addresses it finds. What the script does At a high level, it does four things: Fetches the page using requests Parses the HTML and extracts visible body text using selectolax Searches for email patterns with a regular expression (regex) Removes duplicates so you get a clean list of unique results The output is a simple list like: ['info@company.com', 'support@company.com'] Why this is useful This is a small script, but it solves a...

Pydantic: your bouncer for messy data (with real examples)

Pydantic: your bouncer for messy data (with real examples) If you’ve ever had a pipeline blow up because "quantity" showed up as "two" , you already get why validation matters. Meta description suggestion: Learn how to use Pydantic (v2) to validate API inputs, clean data-pipeline rows, load typed settings from environment variables, and produce clear error messages—with practical Python examples. Quick jumps Why validation saves your sanity The problem Pydantic solves Install Examples you can copy/paste Benefits Use cases Wrap-up Why validation saves your sanity Pydantic is a guardrail for input data. You describe the shape using Python type hints, and Pydantic checks it at runtime. When something’s off, you get a clean ValidationError that tells you exactly what faile...

List Saved Wi-Fi Profiles on Windows Using Python

List Saved Wi-Fi Profiles on Windows Using Python (Safe Audit Script) If you use a Windows laptop for work and personal networks, it collects a list of saved Wi-Fi profiles over time. Sometimes you just want to audit what’s stored on your machine (for cleanup, troubleshooting, or basic hygiene). This mini Python script does exactly that: it lists saved Wi-Fi profile names (SSIDs) without exposing passwords. Why this is useful Cleanup: spot old networks you don’t use anymore. Troubleshooting: confirm whether a Wi-Fi profile is saved before re-adding it. Security hygiene: review saved networks on shared or travel devices. Important note You’ll find scripts online that dump saved Wi-Fi passwords. That’s risky and easy to abuse. This version is intentionally safer: it only lists profile names. If you forgot a Wi-Fi password, the best option is to check the router label/admin page or ask the network owner/admin. Script import subprocess from dataclasses import data...

Compress a Folder of Images with Python

Compress a Whole Folder of Images with Python (Resize + Subfolders + Smart PNG→JPEG) If you keep images for a blog, documentation, or a project folder, file size becomes a problem fast. Big images slow down pages, take space, and make sharing annoying. This script automates the cleanup: it walks through a folder (and subfolders), optionally resizes images to a max width, compresses JPEGs, compresses PNGs, and can convert PNG to JPEG when it actually makes sense. When this is useful Before publishing: shrink images for faster blog load times. Docs + screenshots: reduce size without manually exporting every file. Photo folders: compress camera images and keep a clean “compressed” copy. Automation: run it after exporting images from tools like Snipping Tool, Photoshop, or PowerPoint. What it does Walk subfolders automatically and keeps the same folder structure in the output. Resize to a max width (keeps aspect ratio, never upscales). Compress JPEG us...

Testing with Pytest

Pytest fixtures: clean tests without the ceremony Pytest makes testing feel less like a chore and more like a safety net—especially once fixtures enter the picture. Meta description suggestion: Learn how Pytest fixtures and markers help you write clean, isolated tests that scale—from simple unit tests to large CI pipelines. Quick jumps Why Pytest clicks The testing problem Using fixtures the right way Markers for test control Pros & cons Wrap-up Why Pytest clicks Pytest is one of those tools that feels obvious after you’ve used it for a bit. Tests are just functions. Assertions read like normal Python. And when you need context—database sessions, config, mock data—you reach for fixtures instead of duct tape. The big idea Pytest fixtures handle setup and teardown for you, so eac...

Generate a PDF Invoice from a Web Form with Flask + WeasyPrint

Generate a PDF Invoice from a Web Form with Flask + WeasyPrint If you already collect invoice details in a simple web form, the next step is usually: generate a clean PDF and download it. This Flask + WeasyPrint setup does exactly that. User submits a form, Flask renders an HTML invoice template, and WeasyPrint converts that HTML into a PDF you can download right away. Typical use cases Quick internal invoices (freelance, side projects, small business) Generate PDFs from structured form data (quotes, receipts, reports) Create consistent PDFs using HTML/CSS instead of “drawing” PDFs manually Install pip install flask weasyprint Note: WeasyPrint may require OS-level libraries depending on your system (common on Linux). If install fails, check the WeasyPrint docs for your OS. Improved script (safer, cleaner, returns PDF download) Changes from the original: Returns the PDF as a download instead of saving a fixed invoice.pdf on disk Basic input cleanup + ...