Функция sub в regex может принимать функцию в качестве аргумента repl.
📄 Из документации:
If repl is a function, it is called for every non-overlapping occurrence of pattern. The function takes a single match object argument, and returns the replacement string.
То есть для каждого совпадения будет вызвана функция для вычисления замены вместо замены на одну и ту же строку для всех совпадений.
Иными словами, для замены разных совпадений на разные строки не потребуется запускать re.sub() много раз для каждой строки замены. Достаточно определить функцию, которая вернёт строку для каждого из совпадений.
Описание слишком запутанное🤔, давайте лучше рассмотрим на простом примере:
Создаем карту замены. То есть какие строки на какие требуется менять.
remap = {
'раз': '1',
'два': '2',
'три': '3',
'четыре': '4',
'пять': '5',
}
Пишем функцию поиска строки для замены. Единственным аргументом будет объект re.Match.
Используя данные этого объекта мы вычисляем замену on-the-fly!
def get_str(match: re.Match):
word = match.group(1)
return remap.get(word.lower()) or word
Пример текста.
text = '''Раз Два Три Четыре Пять
Вместе будем мы считать
Пять Четыре Три Два Раз
Мы считать научим вас
'''
Теперь запускаем re.sub и вместо строки замены (repl) подаём имя функции.
(Данный паттерн ищет отдельные слова в тексте)
>>> print(re.sub(r'(\w+)', get_str, text))
1 2 3 4 5
Вместе будем мы считать
5 4 3 2 1
Мы считать научим вас
Думаю, достаточно наглядно 🤓
#libs#regex
#Python#FastAPI
🐍
Complete FastAPI masterclass from scratch
Learn everything about FastApi with Python, Full Stack, OAuth2, SQLAlchemy, RESTful APIs, and practice projects
-----
Main channel: @repo_science
Coupons: @freecoupons_reposcience
-----
#python#docker#fastapi#kbqa#kgqa#llms#neo4j#rag#vue
Yuxi-Know (语析) is a free, open-source platform built with LangGraph, Vue.js, FastAPI, and LightRAG to create smart agents using RAG knowledge bases and knowledge graphs. The latest v0.4.0-beta (Dec 2025) adds file uploads, multimodal image support, mind maps from files, evaluation tools, dark mode, and better graph visuals. It helps you quickly build and deploy custom AI agents for Q&A, analysis, and searches without starting from scratch, saving time and effort on development.
https://github.com/xerrors/Yuxi-Know
#python#ai#authentication#authorization#claude#cursor#fastapi#llm#mcp#mcp_server#mcp_servers#modelcontextprotocol#openapi#windsurf
FastAPI-MCP is a tool that lets you easily turn your FastAPI web API endpoints into Model Context Protocol (MCP) tools, which AI agents can use directly. It requires almost no setup—just connect it to your FastAPI app, and it automatically preserves your request/response data models and documentation. It also includes built-in authentication using your existing FastAPI security methods. You can run the MCP server inside your app or separately, and it communicates efficiently using FastAPI’s ASGI interface. This makes it simple to integrate AI capabilities with your existing FastAPI services without rewriting code, saving you time and effort while keeping your API secure and well-documented[1][5].
https://github.com/tadata-org/fastapi_mcp
#python#agents#ai#api_gateway#asyncio#authentication_middleware#devops#docker#fastapi#federation#gateway#generative_ai#jwt#kubernetes#llm_agents#mcp#model_context_protocol#observability#prompt_engineering#python#tools
The MCP Gateway is a powerful tool that unifies different AI service protocols like REST and MCP into one easy-to-use endpoint. It helps you manage multiple AI tools and services securely with features like authentication, retries, rate-limiting, and real-time monitoring through an admin UI. You can run it locally or in scalable cloud environments using Docker or Kubernetes. It supports various communication methods (HTTP, WebSocket, SSE, stdio) and offers observability with OpenTelemetry for tracking AI tool usage and performance. This gateway simplifies connecting AI clients to diverse services, making development and management more efficient and secure.
https://github.com/IBM/mcp-context-forge
#typescript#aceternity_ui#agent#agents#ai#chrome_extension#extension#fastapi#glean#langchain#langgraph#nextjs#nextjs15#notebooklm#notion#ollama#perplexity#python#rag#slack#typescript
SurfSense is a highly customizable AI research tool that helps you organize and search your personal knowledge base. It connects to many external sources like search engines, Slack, Notion, YouTube, and GitHub. You can upload various file types and interact with your saved content using natural language. SurfSense provides cited answers and supports local AI models, making it a powerful tool for research. It's also self-hostable and open-source, allowing you to control your data and customize it as needed. This helps you manage information more efficiently and privately.
https://github.com/MODSetter/SurfSense
#python#api#bracket#brackets#docker#docusaurus#fastapi#json#mantine#nextjs#postgresql#python#react#reactjs#selfhosted#sports#tournament_bracket#tournament_manager#tournaments#web#yarn
Bracket is a tool for organizing tournaments. It supports different formats like single elimination, round-robin, and Swiss. You can create teams, add players, and manage multiple clubs with several tournaments. The system allows you to drag-and-drop matches to different courts or reschedule them. It also provides customizable dashboard pages for public viewing. This makes it easier to manage and engage with tournaments, offering more flexibility and control for organizers and participants.
https://github.com/evroon/bracket
#python#api#async#asyncio#fastapi#framework#json#json_schema#openapi#openapi3#pydantic#python#python_types#python3#redoc#rest#starlette#swagger#swagger_ui#uvicorn#web
FastAPI is a modern Python web framework for building fast, reliable APIs that is easy to learn and quick to code, making it ready for production use right away. It uses standard Python type hints, which means you get automatic data validation, fewer bugs, and great editor support with code completion and type checks. FastAPI also generates interactive documentation automatically, so you and your team can understand and test your API easily. The main benefit is that you can develop robust, high-performance APIs much faster and with less effort, while reducing errors and making your code easier to maintain[1][2][3].
https://github.com/fastapi/fastapi