<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>FAQ Develop</title>
	<atom:link href="https://faq-develop.ru/feed/" rel="self" type="application/rss+xml" />
	<link>https://faq-develop.ru/</link>
	<description>Уроки программирования и практические инструкции</description>
	<lastBuildDate>Fri, 03 Jul 2026 10:27:15 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.2</generator>

<image>
	<url>https://faq-develop.ru/wp-content/uploads/2026/08/faq-develop-favicon-150x150.png</url>
	<title>FAQ Develop</title>
	<link>https://faq-develop.ru/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Полная шпаргалка по Python</title>
		<link>https://faq-develop.ru/jazyki-programmirovanija/python/polnaa-spargalka-po-python/</link>
					<comments>https://faq-develop.ru/jazyki-programmirovanija/python/polnaa-spargalka-po-python/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 03 Jul 2026 10:27:15 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://faq-develop.ru/%d0%b1%d0%b5%d0%b7-%d1%80%d1%83%d0%b1%d1%80%d0%b8%d0%ba%d0%b8/polnaa-spargalka-po-python/</guid>

					<description><![CDATA[<p>Эта шпаргалка нужна не для чтения подряд, а для работы рядом с кодом. Откройте нужный раздел, скопируйте маленький пример, запустите его, поменяйте входные данные и проверьте вывод Внутри собраны базовые конструкции Python, которые чаще всего нужны новичку: переменные, строки, числа, условия, циклы, списки, словари, функции, файлы, ошибки, модули и небольшой цельный пример Как запускать примеры […]</p>
<p>The post <a href="https://faq-develop.ru/jazyki-programmirovanija/python/polnaa-spargalka-po-python/">Полная шпаргалка по Python</a> appeared first on <a href="https://faq-develop.ru">FAQ Develop</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Эта шпаргалка нужна не для чтения подряд, а для работы рядом с кодом. Откройте нужный раздел, скопируйте маленький пример, запустите его, поменяйте входные данные и проверьте вывод</p>
<p>Внутри собраны базовые конструкции Python, которые чаще всего нужны новичку: переменные, строки, числа, условия, циклы, списки, словари, функции, файлы, ошибки, модули и небольшой цельный пример</p>
<h2 class="wp-block-heading" id="как-запускать-примеры">Как запускать примеры</h2>
<p>Если Python уже установлен, проверьте версию и запустите файл</p>
<pre class="wp-block-code"><code class="language-bash">python3 --version
python3 main.py</code></pre>
<p>В интерактивном режиме удобно быстро проверять одну строку</p>
<pre class="wp-block-code"><code class="language-bash">python3</code></pre>
<p>В файле <code>main.py</code> код обычно читается проще, чем в консоли. Для учебных примеров достаточно создать файл, вставить блок кода и запустить его командой выше</p>
<h2 class="wp-block-heading" id="переменные-вывод-и-ввод">Переменные, вывод и ввод</h2>
<p>Переменная хранит значение под понятным именем. <code>print()</code> выводит результат, <code>input()</code> читает строку от пользователя</p>
<pre class="wp-block-code"><code class="language-python">name = "Анна"
age = 28

print(name)
print(f"{name}, возраст: {age}")</code></pre>
<p><code>input()</code> всегда возвращает строку, даже если человек ввел число</p>
<pre class="wp-block-code"><code class="language-python">age_text = input("Возраст: ")
age = int(age_text)

print(age + 1)</code></pre>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Прием</th>
<th>Пример</th>
<th>Когда нужен</th>
</tr>
</thead>
<tbody>
<tr>
<td>вывести значение</td>
<td><code>print(name)</code></td>
<td>проверить результат</td>
</tr>
<tr>
<td>строка с переменной</td>
<td><code>f"{name}: {age}"</code></td>
<td>собрать понятный текст</td>
</tr>
<tr>
<td>ввод пользователя</td>
<td><code>input("Имя: ")</code></td>
<td>получить значение с клавиатуры</td>
</tr>
<tr>
<td>преобразование в число</td>
<td><code>int("42")</code></td>
<td>считать введенное число</td>
</tr>
</tbody>
</table>
</figure>
<h2 class="wp-block-heading" id="базовые-типы-данных">Базовые типы данных</h2>
<p>Тип определяет, какие операции можно делать со значением</p>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Тип</th>
<th>Пример</th>
<th>Для чего нужен</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>str</code></td>
<td><code>"Python"</code></td>
<td>текст</td>
</tr>
<tr>
<td><code>int</code></td>
<td><code>42</code></td>
<td>целые числа</td>
</tr>
<tr>
<td><code>float</code></td>
<td><code>3.14</code></td>
<td>дробные числа</td>
</tr>
<tr>
<td><code>bool</code></td>
<td><code>True</code></td>
<td>логика</td>
</tr>
<tr>
<td><code>None</code></td>
<td><code>None</code></td>
<td>отсутствие значения</td>
</tr>
<tr>
<td><code>list</code></td>
<td><code>["a", "b"]</code></td>
<td>изменяемый список</td>
</tr>
<tr>
<td><code>tuple</code></td>
<td><code>(10, 20)</code></td>
<td>фиксированная группа</td>
</tr>
<tr>
<td><code>dict</code></td>
<td><code>{"name": "Анна"}</code></td>
<td>значения по ключам</td>
</tr>
<tr>
<td><code>set</code></td>
<td><code>{"python", "sql"}</code></td>
<td>уникальные значения</td>
</tr>
</tbody>
</table>
</figure>
<p>Проверить тип можно через <code>type()</code> или <code>isinstance()</code></p>
<pre class="wp-block-code"><code class="language-python">value = ["python", "sql"]

print(type(value))
print(isinstance(value, list))</code></pre>
<h2 class="wp-block-heading" id="числа-и-арифметика">Числа и арифметика</h2>
<pre class="wp-block-code"><code class="language-python">a = 10
b = 3

print(a + b)
print(a - b)
print(a * b)
print(a / b)
print(a // b)
print(a % b)
print(a ** b)</code></pre>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Оператор</th>
<th>Что делает</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>+</code></td>
<td>сложение</td>
</tr>
<tr>
<td><code>-</code></td>
<td>вычитание</td>
</tr>
<tr>
<td><code>*</code></td>
<td>умножение</td>
</tr>
<tr>
<td><code>/</code></td>
<td>деление с дробной частью</td>
</tr>
<tr>
<td><code>//</code></td>
<td>целая часть деления</td>
</tr>
<tr>
<td><code>%</code></td>
<td>остаток от деления</td>
</tr>
<tr>
<td><code>**</code></td>
<td>степень</td>
</tr>
</tbody>
</table>
</figure>
<p>Если число пришло строкой, его нужно преобразовать</p>
<pre class="wp-block-code"><code class="language-python">price = "1200"
quantity = "3"

total = int(price) * int(quantity)
print(total)</code></pre>
<h2 class="wp-block-heading" id="строки">Строки</h2>
<p>Строки часто нужно очищать, приводить к одному регистру, разбивать и собирать обратно</p>
<pre class="wp-block-code"><code class="language-python">text = "  Python, SQL, HTML  "

clean = text.strip()
lower = clean.lower()
parts = [part.strip() for part in clean.split(",")]

print(clean)
print(lower)
print(parts)</code></pre>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Метод</th>
<th>Пример</th>
<th>Что делает</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>strip()</code></td>
<td><code>" text ".strip()</code></td>
<td>убирает пробелы по краям</td>
</tr>
<tr>
<td><code>lower()</code></td>
<td><code>"Python".lower()</code></td>
<td>делает нижний регистр</td>
</tr>
<tr>
<td><code>upper()</code></td>
<td><code>"py".upper()</code></td>
<td>делает верхний регистр</td>
</tr>
<tr>
<td><code>replace()</code></td>
<td><code>"a-b".replace("-", " ")</code></td>
<td>заменяет фрагмент</td>
</tr>
<tr>
<td><code>split()</code></td>
<td><code>"a,b".split(",")</code></td>
<td>разбивает строку</td>
</tr>
<tr>
<td><code>join()</code></td>
<td><code>", ".join(items)</code></td>
<td>собирает строки</td>
</tr>
<tr>
<td><code>startswith()</code></td>
<td><code>text.startswith("http")</code></td>
<td>проверяет начало</td>
</tr>
<tr>
<td><code>in</code></td>
<td><code>"py" in text</code></td>
<td>ищет подстроку</td>
</tr>
</tbody>
</table>
</figure>
<p>Полезный пример очистки списка строк</p>
<pre class="wp-block-code"><code class="language-python">raw = [" Python ", "", "SQL", " python "]
clean = []

for item in raw:
    item = item.strip().lower()
    if item and item not in clean:
        clean.append(item)

print(clean)</code></pre>
<h2 class="wp-block-heading" id="условия">Условия</h2>
<p>Условие выбирает, какой код выполнить</p>
<pre class="wp-block-code"><code class="language-python">score = 75

if score &gt;= 90:
    print("отлично")
elif score &gt;= 60:
    print("зачет")
else:
    print("нужно повторить")</code></pre>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Оператор</th>
<th>Значение</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>==</code></td>
<td>равно</td>
</tr>
<tr>
<td><code>!=</code></td>
<td>не равно</td>
</tr>
<tr>
<td><code>&gt;</code></td>
<td>больше</td>
</tr>
<tr>
<td><code>&lt;</code></td>
<td>меньше</td>
</tr>
<tr>
<td><code>&gt;=</code></td>
<td>больше или равно</td>
</tr>
<tr>
<td><code>&lt;=</code></td>
<td>меньше или равно</td>
</tr>
<tr>
<td><code>and</code></td>
<td>оба условия истинны</td>
</tr>
<tr>
<td><code>or</code></td>
<td>хотя бы одно условие истинно</td>
</tr>
<tr>
<td><code>not</code></td>
<td>отрицание</td>
</tr>
</tbody>
</table>
</figure>
<p>Проверка пустых значений в Python обычно короткая</p>
<pre class="wp-block-code"><code class="language-python">items = []

if not items:
    print("список пуст")</code></pre>
<div>
</div>
<h2 class="wp-block-heading" id="циклы">Циклы</h2>
<p><code>for</code> перебирает элементы. <code>while</code> повторяет код, пока условие истинно</p>
<pre class="wp-block-code"><code class="language-python">skills = ["python", "sql", "html"]

for skill in skills:
    print(skill)</code></pre>
<p>Когда нужен номер, используйте <code>enumerate</code></p>
<pre class="wp-block-code"><code class="language-python">tasks = ["код", "тест", "публикация"]

for number, task in enumerate(tasks, start=1):
    print(number, task)</code></pre>
<p><code>range()</code> помогает повторить действие нужное количество раз</p>
<pre class="wp-block-code"><code class="language-python">for number in range(1, 4):
    print(number)</code></pre>
<p><code>break</code> останавливает цикл, <code>continue</code> переходит к следующей итерации</p>
<pre class="wp-block-code"><code class="language-python">for item in ["", "python", "sql"]:
    if not item:
        continue
    if item == "sql":
        break
    print(item)</code></pre>
<h2 class="wp-block-heading" id="списки">Списки</h2>
<p>Список хранит значения в порядке и умеет меняться</p>
<pre class="wp-block-code"><code class="language-python">items = ["python", "sql"]

items.append("html")
items.insert(0, "git")
items.remove("sql")

print(items)
print(items[0])
print(items[-1])
print(len(items))</code></pre>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Операция</th>
<th>Пример</th>
<th>Что делает</th>
</tr>
</thead>
<tbody>
<tr>
<td>добавить в конец</td>
<td><code>items.append("html")</code></td>
<td>один элемент</td>
</tr>
<tr>
<td>добавить несколько</td>
<td><code>items.extend(["css", "js"])</code></td>
<td>расширяет список</td>
</tr>
<tr>
<td>вставить</td>
<td><code>items.insert(0, "git")</code></td>
<td>добавляет по индексу</td>
</tr>
<tr>
<td>удалить по значению</td>
<td><code>items.remove("sql")</code></td>
<td>первое совпадение</td>
</tr>
<tr>
<td>удалить по индексу</td>
<td><code>items.pop(0)</code></td>
<td>удаляет и возвращает</td>
</tr>
<tr>
<td>длина</td>
<td><code>len(items)</code></td>
<td>количество элементов</td>
</tr>
<tr>
<td>срез</td>
<td><code>items[:3]</code></td>
<td>часть списка</td>
</tr>
</tbody>
</table>
</figure>
<p>Список удобно фильтровать через comprehension</p>
<pre class="wp-block-code"><code class="language-python">numbers = [1, 2, 3, 4, 5]
even = [number for number in numbers if number % 2 == 0]

print(even)</code></pre>
<p>Сортировка бывает двух видов: <code>sorted()</code> возвращает новый список, <code>.sort()</code> меняет исходный</p>
<pre class="wp-block-code"><code class="language-python">numbers = [3, 1, 2]

print(sorted(numbers))
print(numbers)

numbers.sort()
print(numbers)</code></pre>
<h2 class="wp-block-heading" id="кортежи-и-множества">Кортежи и множества</h2>
<p>Кортеж похож на список, но обычно используется для фиксированной группы значений</p>
<pre class="wp-block-code"><code class="language-python">point = (10, 20)
x, y = point

print(x, y)</code></pre>
<p>Множество хранит уникальные элементы</p>
<pre class="wp-block-code"><code class="language-python">skills = ["python", "sql", "python"]
unique_skills = set(skills)

print(unique_skills)</code></pre>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Тип</th>
<th>Когда использовать</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>list</code></td>
<td>данные нужно менять, добавлять, удалять, сортировать</td>
</tr>
<tr>
<td><code>tuple</code></td>
<td>фиксированная пара или группа значений</td>
</tr>
<tr>
<td><code>set</code></td>
<td>нужно убрать повторы или проверить уникальность</td>
</tr>
</tbody>
</table>
</figure>
<h2 class="wp-block-heading" id="словари">Словари</h2>
<p>Словарь хранит данные по ключам. Это не одна запись для галочки, а один из главных типов Python для реальных данных</p>
<pre class="wp-block-code"><code class="language-python">user = {
    "name": "Анна",
    "city": "Казань",
    "age": 28,
}

print(user["name"])
print(user.get("email", "email не указан"))</code></pre>
<p>Добавление и изменение выглядят одинаково</p>
<pre class="wp-block-code"><code class="language-python">user["email"] = "anna@example.com"
user["city"] = "Москва"

print(user)</code></pre>
<p>Перебор ключей и значений</p>
<pre class="wp-block-code"><code class="language-python">for key, value in user.items():
    print(key, value)</code></pre>
<p>Список словарей встречается в таблицах, API, парсерах и маленьких приложениях</p>
<pre class="wp-block-code"><code class="language-python">users = [
    {"id": 1, "name": "Анна", "active": True},
    {"id": 2, "name": "Илья", "active": False},
]

active_users = [user for user in users if user["active"]]
print(active_users)</code></pre>
<p>Словарь по <code>id</code> помогает быстро находить запись</p>
<pre class="wp-block-code"><code class="language-python">users_by_id = {user["id"]: user for user in users}

print(users_by_id[1]["name"])</code></pre>
<p>Подсчет повторов через словарь</p>
<pre class="wp-block-code"><code class="language-python">cities = ["Казань", "Москва", "Казань", "Самара"]
counts = {}

for city in cities:
    counts[city] = counts.get(city, 0) + 1

print(counts)</code></pre>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Прием</th>
<th>Пример</th>
<th>Когда нужен</th>
</tr>
</thead>
<tbody>
<tr>
<td>прочитать обязательный ключ</td>
<td><code>user["name"]</code></td>
<td>ключ точно должен быть</td>
</tr>
<tr>
<td>прочитать необязательный ключ</td>
<td><code>user.get("email", "")</code></td>
<td>поле может отсутствовать</td>
</tr>
<tr>
<td>проверить ключ</td>
<td><code>"city" in user</code></td>
<td>важно наличие ключа</td>
</tr>
<tr>
<td>получить пары</td>
<td><code>user.items()</code></td>
<td>перебор ключ-значение</td>
</tr>
<tr>
<td>получить ключи</td>
<td><code>user.keys()</code></td>
<td>список полей</td>
</tr>
<tr>
<td>получить значения</td>
<td><code>user.values()</code></td>
<td>только значения</td>
</tr>
</tbody>
</table>
</figure>
<h2 class="wp-block-heading" id="функции">Функции</h2>
<p>Функция собирает повторяемое действие под именем</p>
<pre class="wp-block-code"><code class="language-python">def normalize(text):
    return text.strip().lower()

print(normalize(" Python "))</code></pre>
<p>Аргументы могут иметь значения по умолчанию</p>
<pre class="wp-block-code"><code class="language-python">def greet(name, prefix="Привет"):
    return f"{prefix}, {name}"

print(greet("Анна"))
print(greet("Анна", "Добрый день"))</code></pre>
<p>Функция может возвращать несколько значений через кортеж</p>
<pre class="wp-block-code"><code class="language-python">def get_bounds(numbers):
    return min(numbers), max(numbers)

low, high = get_bounds([5, 1, 9])
print(low, high)</code></pre>
<h2 class="wp-block-heading" id="comprehension-короткая-сборка-коллекций">Comprehension: короткая сборка коллекций</h2>
<p>Comprehension помогает собрать список, множество или словарь из других данных</p>
<pre class="wp-block-code"><code class="language-python">words = ["python", "sql", "html"]

lengths = [len(word) for word in words]
unique_lengths = {len(word) for word in words}
words_by_length = {word: len(word) for word in words}

print(lengths)
print(unique_lengths)
print(words_by_length)</code></pre>
<p>Если внутри много условий и проверок, обычный цикл часто читается лучше</p>
<pre class="wp-block-code"><code class="language-python">rows = ["tea:120", "bad row", "coffee:250"]
prices = {}

for row in rows:
    if ":" not in row:
        continue
    name, price = row.split(":", 1)
    prices[name] = int(price)

print(prices)</code></pre>
<h2 class="wp-block-heading" id="файлы-через-pathlib">Файлы через pathlib</h2>
<p><code>pathlib.Path</code> удобен для чтения и записи файлов</p>
<pre class="wp-block-code"><code class="language-python">from pathlib import Path

path = Path("notes.txt")
path.write_text("первая строка\nвторая строка", encoding="utf-8")

text = path.read_text(encoding="utf-8")
print(text)</code></pre>
<p>Прочитать файл строками и убрать пустые строки</p>
<pre class="wp-block-code"><code class="language-python">from pathlib import Path

path = Path("notes.txt")

if path.exists():
    lines = [
        line.strip()
        for line in path.read_text(encoding="utf-8").splitlines()
        if line.strip()
    ]
else:
    lines = []

print(lines)</code></pre>
<p>Записать список строк</p>
<pre class="wp-block-code"><code class="language-python">from pathlib import Path

items = ["python", "sql", "html"]
Path("skills.txt").write_text("\n".join(items), encoding="utf-8")</code></pre>
<h2 class="wp-block-heading" id="ошибки-и-исключения">Ошибки и исключения</h2>
<p>Ошибки лучше обрабатывать там, где понятно, что делать дальше</p>
<pre class="wp-block-code"><code class="language-python">raw = "42"

try:
    value = int(raw)
except ValueError:
    value = 0

print(value)</code></pre>
<p>Проверка файла перед чтением часто понятнее, чем ловить ошибку</p>
<pre class="wp-block-code"><code class="language-python">from pathlib import Path

path = Path("data.txt")

if path.exists():
    print(path.read_text(encoding="utf-8"))
else:
    print("файл не найден")</code></pre>
<p><code>raise</code> используют, когда нужно явно остановить программу с понятной причиной</p>
<pre class="wp-block-code"><code class="language-python">def require_key(data, key):
    if key not in data:
        raise KeyError(f"Нет обязательного ключа: {key}")
    return data[key]</code></pre>
<h2 class="wp-block-heading" id="модули-импорт-и-пакеты">Модули, импорт и пакеты</h2>
<p>Импорт подключает готовый код</p>
<pre class="wp-block-code"><code class="language-python">from pathlib import Path
import random

print(Path.cwd())
print(random.choice(["python", "sql", "html"]))</code></pre>
<p>Частые команды для проекта</p>
<pre class="wp-block-code"><code class="language-bash">python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install requests
python3 -m pip freeze</code></pre>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Команда</th>
<th>Зачем нужна</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>python3 -m venv .venv</code></td>
<td>создать окружение</td>
</tr>
<tr>
<td><code>source .venv/bin/activate</code></td>
<td>включить окружение</td>
</tr>
<tr>
<td><code>python3 -m pip install ...</code></td>
<td>установить пакет</td>
</tr>
<tr>
<td><code>python3 -m pip freeze</code></td>
<td>посмотреть зависимости</td>
</tr>
</tbody>
</table>
</figure>
<h2 class="wp-block-heading" id="мини-проект-очистить-список-задач-и-сохранить-файл">Мини-проект: очистить список задач и сохранить файл</h2>
<p>Этот пример связывает основные блоки шпаргалки: строки, списки, словари, функции, файл, условие и цикл</p>
<pre class="wp-block-code"><code class="language-python">from pathlib import Path

def normalize_task(text):
    return text.strip().lower()

def build_tasks(raw_tasks):
    tasks = []
    seen_titles = set()

    for raw_task in raw_tasks:
        title = normalize_task(raw_task)
        if not title or title in seen_titles:
            continue

        tasks.append({
            "title": title,
            "status": "todo",
        })
        seen_titles.add(title)

    return tasks

raw_tasks = [" Написать код ", "", "проверить форму", "написать код"]
tasks = build_tasks(raw_tasks)

lines = []
for number, task in enumerate(tasks, start=1):
    lines.append(f"{number}. {task['title']} — {task['status']}")

Path("tasks.txt").write_text("\n".join(lines), encoding="utf-8")
print("\n".join(lines))</code></pre>
<p>Что здесь происходит:</p>
<ul class="wp-block-list">
<li><code>normalize_task</code> очищает строку и приводит ее к одному регистру</li>
<li><code>build_tasks</code> убирает пустые строки и повторы</li>
<li><code>set</code> помогает быстро проверять повторяющиеся задачи</li>
<li>список <code>tasks</code> хранит словари с полями задачи</li>
<li><code>enumerate</code> добавляет номера для вывода</li>
<li><code>Path.write_text</code> сохраняет результат в файл</li>
</ul>
<h2 class="wp-block-heading" id="что-проверять-когда-пример-не-работает">Что проверять, когда пример не работает</h2>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Симптом</th>
<th>Что проверить</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>NameError</code></td>
<td>имя переменной написано одинаково везде</td>
</tr>
<tr>
<td><code>TypeError</code></td>
<td>тип значения подходит для операции</td>
</tr>
<tr>
<td><code>ValueError</code></td>
<td>строка реально превращается в число</td>
</tr>
<tr>
<td><code>KeyError</code></td>
<td>ключ есть в словаре</td>
</tr>
<tr>
<td><code>IndexError</code></td>
<td>индекс не выходит за длину списка</td>
</tr>
<tr>
<td>файл не найден</td>
<td>путь и текущая папка верные</td>
</tr>
</tbody>
</table>
</figure>
<p>Хорошая шпаргалка по Python должна помогать быстро вернуться к действию. Если вы нашли нужный раздел, запустили пример, изменили данные и поняли ошибку, материал работает</p>
<blockquote class="wp-block-quote">
<p>По этой теме полезно отдельно посмотреть <a href="/jazyki-programmirovanija/python/sostavte-ezhenedelnoe-raspisanie-zanyatij/">Составьте еженедельное расписание занятий</a>, чтобы расширить контекст и сравнить подходы</p>
</blockquote>
<blockquote class="wp-block-quote">
<p>По этой теме полезно отдельно посмотреть <a href="/jazyki-programmirovanija/python/annotatsii-tipov-dlya-dekoratorov-v-python/">Аннотации типов для декораторов в Python</a>, чтобы расширить контекст и сравнить подходы</p>
</blockquote>
<div>
</div>
<p>The post <a href="https://faq-develop.ru/jazyki-programmirovanija/python/polnaa-spargalka-po-python/">Полная шпаргалка по Python</a> appeared first on <a href="https://faq-develop.ru">FAQ Develop</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://faq-develop.ru/jazyki-programmirovanija/python/polnaa-spargalka-po-python/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>5 шпаргалок по Python: что сохранить новичку</title>
		<link>https://faq-develop.ru/jazyki-programmirovanija/python/5-spargalok-po-python-cto-sohranit-novicku/</link>
					<comments>https://faq-develop.ru/jazyki-programmirovanija/python/5-spargalok-po-python-cto-sohranit-novicku/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 03 Jul 2026 10:27:08 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://faq-develop.ru/%d0%b1%d0%b5%d0%b7-%d1%80%d1%83%d0%b1%d1%80%d0%b8%d0%ba%d0%b8/5-spargalok-po-python-cto-sohranit-novicku/</guid>

					<description><![CDATA[<p>Новичку не нужна одна огромная таблица на все случаи. Полезнее сохранить пять маленьких шпаргалок: синтаксис, коллекции, функции, ошибки и файлы. Каждая должна содержать не только команду, но и пример, который вы запускали сами По этой теме полезно отдельно посмотреть Составьте еженедельное расписание занятий, чтобы расширить контекст и сравнить подходы По этой теме полезно отдельно посмотреть […]</p>
<p>The post <a href="https://faq-develop.ru/jazyki-programmirovanija/python/5-spargalok-po-python-cto-sohranit-novicku/">5 шпаргалок по Python: что сохранить новичку</a> appeared first on <a href="https://faq-develop.ru">FAQ Develop</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Новичку не нужна одна огромная таблица на все случаи. Полезнее сохранить пять маленьких шпаргалок: синтаксис, коллекции, функции, ошибки и файлы. Каждая должна содержать не только команду, но и пример, который вы запускали сами</p>
<blockquote class="wp-block-quote">
<p>По этой теме полезно отдельно посмотреть <a href="/jazyki-programmirovanija/python/sostavte-ezhenedelnoe-raspisanie-zanyatij/">Составьте еженедельное расписание занятий</a>, чтобы расширить контекст и сравнить подходы</p>
</blockquote>
<blockquote class="wp-block-quote">
<p>По этой теме полезно отдельно посмотреть <a href="/jazyki-programmirovanija/python/annotatsii-tipov-dlya-dekoratorov-v-python/">Аннотации типов для декораторов в Python</a>, чтобы расширить контекст и сравнить подходы</p>
</blockquote>
<h2 class="wp-block-heading" id="синтаксис">Синтаксис</h2>
<pre class="wp-block-code"><code class="language-python">name = "Анна"
age = 28

if age &gt;= 18:
    print(f"{name}: доступ открыт")
else:
    print(f"{name}: доступ закрыт")</code></pre>
<p>Что сохранить:</p>
<ul class="wp-block-list">
<li>переменные</li>
<li><code>print</code></li>
<li><code>input</code></li>
<li><code>if</code>, <code>elif</code>, <code>else</code></li>
<li>преобразование <code>int</code>, <code>str</code>, <code>float</code></li>
</ul>
<h2 class="wp-block-heading" id="коллекции">Коллекции</h2>
<pre class="wp-block-code"><code class="language-python">skills = ["python", "sql", "python"]
unique_skills = []

for skill in skills:
    if skill not in unique_skills:
        unique_skills.append(skill)

print(unique_skills)</code></pre>
<p>Что сохранить:</p>
<ul class="wp-block-list">
<li><code>list.append</code></li>
<li><code>len</code></li>
<li><code>for</code></li>
<li><code>enumerate</code></li>
<li>срезы</li>
<li><code>set</code></li>
</ul>
<h2 class="wp-block-heading" id="словари">Словари</h2>
<pre class="wp-block-code"><code class="language-python">user = {
    "name": "Анна",
    "city": "Казань",
}

user["email"] = "anna@example.com"

print(user["name"])
print(user.get("phone", "телефон не указан"))</code></pre>
<p>Что сохранить:</p>
<ul class="wp-block-list">
<li>чтение по ключу</li>
<li><code>get</code></li>
<li>проверку <code>"key" in dict</code></li>
<li><code>items</code></li>
<li>список словарей</li>
</ul>
<h2 class="wp-block-heading" id="функции">Функции</h2>
<pre class="wp-block-code"><code class="language-python">def normalize(text):
    return text.strip().lower()

values = [" Python ", "", "SQL"]
clean = [normalize(value) for value in values if value.strip()]

print(clean)</code></pre>
<p>Что сохранить:</p>
<ul class="wp-block-list">
<li><code>def</code></li>
<li><code>return</code></li>
<li>аргументы по умолчанию</li>
<li>короткие функции для повторяемых действий</li>
<li>понятные имена переменных</li>
</ul>
<h2 class="wp-block-heading" id="ошибки-и-файлы">Ошибки и файлы</h2>
<pre class="wp-block-code"><code class="language-python">from pathlib import Path

path = Path("notes.txt")

if path.exists():
    text = path.read_text(encoding="utf-8")
else:
    text = ""

print(text)</code></pre>
<p>Что сохранить:</p>
<ul class="wp-block-list">
<li><code>try except</code></li>
<li><code>Path</code></li>
<li><code>read_text</code></li>
<li><code>write_text</code></li>
<li>проверку <code>exists</code></li>
</ul>
<h2 class="wp-block-heading" id="как-вести-свои-шпаргалки">Как вести свои шпаргалки</h2>
<p>После каждой новой темы добавляйте три вещи:</p>
<ul class="wp-block-list">
<li>рабочий пример</li>
<li>ошибку, на которой вы споткнулись</li>
<li>короткое объяснение своими словами</li>
</ul>
<p>Пример записи в личной шпаргалке:</p>
<pre class="wp-block-code"><code class="language-python">items = ["a", "b"]
print(items[0])</code></pre>
<p>Комментарий рядом: индекс начинается с нуля, поэтому первый элемент — <code>0</code>, второй — <code>1</code></p>
<div>
</div>
<h2 class="wp-block-heading" id="что-должно-быть-внутри-каждой-шпаргалки">Что должно быть внутри каждой шпаргалки</h2>
<p>Новичку не нужны красивые конспекты на десять страниц. Нужны короткие рабочие листы, к которым можно вернуться во время задачи</p>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Шпаргалка</th>
<th>Что сохранить</th>
<th>Мини-пример</th>
</tr>
</thead>
<tbody>
<tr>
<td>синтаксис</td>
<td><code>if</code>, <code>for</code>, <code>def</code>, <code>return</code></td>
<td>функция с условием</td>
</tr>
<tr>
<td>коллекции</td>
<td><code>list</code>, <code>tuple</code>, <code>set</code></td>
<td>список задач</td>
</tr>
<tr>
<td>словари</td>
<td><code>dict</code>, <code>get</code>, <code>items</code></td>
<td>профиль пользователя</td>
</tr>
<tr>
<td>строки</td>
<td><code>strip</code>, <code>split</code>, <code>join</code></td>
<td>очистка ввода</td>
</tr>
<tr>
<td>файлы и ошибки</td>
<td><code>Path</code>, <code>try</code>, <code>except</code></td>
<td>чтение файла</td>
</tr>
</tbody>
</table>
</figure>
<h2 class="wp-block-heading" id="пример-личной-шпаргалки-по-словарям">Пример личной шпаргалки по словарям</h2>
<pre class="wp-block-code"><code class="language-python">user = {"name": "Анна", "city": "Казань"}

print(user["name"])
print(user.get("email", "нет email"))

user["email"] = "anna@example.com"

for key, value in user.items():
    print(key, value)</code></pre>
<p>Рядом с таким примером стоит записать две ошибки: <code>KeyError</code>, если ключа нет, и путаница между <code>user["key"]</code> и <code>user.get("key")</code></p>
<h2 class="wp-block-heading" id="пример-шпаргалки-по-файлам">Пример шпаргалки по файлам</h2>
<pre class="wp-block-code"><code class="language-python">from pathlib import Path

path = Path("notes.txt")
path.write_text("python\nsql", encoding="utf-8")

lines = path.read_text(encoding="utf-8").splitlines()
print(lines)</code></pre>
<p>Этот блок нужен, чтобы не вспоминать каждый раз синтаксис <code>Path</code>. Его можно расширить примерами <code>exists()</code>, <code>mkdir()</code> и перебора файлов через <code>glob()</code></p>
<h2 class="wp-block-heading" id="как-обновлять-шпаргалки">Как обновлять шпаргалки</h2>
<p>После каждой маленькой задачи добавляйте не абзац теории, а один проверенный пример. Хорошая запись занимает 5-12 строк кода и отвечает на вопрос: что я смогу повторить через неделю без поиска</p>
<h2 class="wp-block-heading" id="недельная-практика">Недельная практика</h2>
<p>В первый день сохраните синтаксис и условия. Во второй — списки и строки. В третий — словари. В четвертый — функции. В пятый — файлы и ошибки. На выходных соберите один маленький скрипт, где все это встречается вместе</p>
<h2 class="wp-block-heading" id="мини-план-на-неделю">Мини-план на неделю</h2>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>День</th>
<th>Что повторить</th>
</tr>
</thead>
<tbody>
<tr>
<td>1</td>
<td>переменные, строки, вывод</td>
</tr>
<tr>
<td>2</td>
<td>условия и циклы</td>
</tr>
<tr>
<td>3</td>
<td>списки</td>
</tr>
<tr>
<td>4</td>
<td>словари</td>
</tr>
<tr>
<td>5</td>
<td>функции</td>
</tr>
<tr>
<td>6</td>
<td>файлы</td>
</tr>
<tr>
<td>7</td>
<td>маленький скрипт из всех блоков</td>
</tr>
</tbody>
</table>
</figure>
<h2 class="wp-block-heading" id="маленький-итоговый-скрипт">Маленький итоговый скрипт</h2>
<pre class="wp-block-code"><code class="language-python">from pathlib import Path

def normalize(text):
    return text.strip().lower()

raw = [" Python ", "", "SQL", " python "]
items = []

for value in raw:
    value = normalize(value)
    if value and value not in items:
        items.append(value)

Path("result.txt").write_text("\n".join(items), encoding="utf-8")
print(items)</code></pre>
<p>Если вы понимаете этот скрипт, пять базовых шпаргалок уже работают вместе</p>
<div>
</div>
<p>The post <a href="https://faq-develop.ru/jazyki-programmirovanija/python/5-spargalok-po-python-cto-sohranit-novicku/">5 шпаргалок по Python: что сохранить новичку</a> appeared first on <a href="https://faq-develop.ru">FAQ Develop</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://faq-develop.ru/jazyki-programmirovanija/python/5-spargalok-po-python-cto-sohranit-novicku/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Шпаргалка: базовые типы данных в Python</title>
		<link>https://faq-develop.ru/jazyki-programmirovanija/python/spargalka-bazovye-tipy-dannyh-v-python/</link>
					<comments>https://faq-develop.ru/jazyki-programmirovanija/python/spargalka-bazovye-tipy-dannyh-v-python/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 03 Jul 2026 10:27:02 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://faq-develop.ru/%d0%b1%d0%b5%d0%b7-%d1%80%d1%83%d0%b1%d1%80%d0%b8%d0%ba%d0%b8/spargalka-bazovye-tipy-dannyh-v-python/</guid>

					<description><![CDATA[<p>Тип данных отвечает на вопрос: что это за значение и какие действия с ним можно делать. Новичку важно не только знать названия типов, но и понимать, где каждый тип применяется По этой теме полезно отдельно посмотреть Составьте еженедельное расписание занятий, чтобы расширить контекст и сравнить подходы По этой теме полезно отдельно посмотреть Аннотации типов для […]</p>
<p>The post <a href="https://faq-develop.ru/jazyki-programmirovanija/python/spargalka-bazovye-tipy-dannyh-v-python/">Шпаргалка: базовые типы данных в Python</a> appeared first on <a href="https://faq-develop.ru">FAQ Develop</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Тип данных отвечает на вопрос: что это за значение и какие действия с ним можно делать. Новичку важно не только знать названия типов, но и понимать, где каждый тип применяется</p>
<blockquote class="wp-block-quote">
<p>По этой теме полезно отдельно посмотреть <a href="/jazyki-programmirovanija/python/sostavte-ezhenedelnoe-raspisanie-zanyatij/">Составьте еженедельное расписание занятий</a>, чтобы расширить контекст и сравнить подходы</p>
</blockquote>
<blockquote class="wp-block-quote">
<p>По этой теме полезно отдельно посмотреть <a href="/jazyki-programmirovanija/python/annotatsii-tipov-dlya-dekoratorov-v-python/">Аннотации типов для декораторов в Python</a>, чтобы расширить контекст и сравнить подходы</p>
</blockquote>
<h2 class="wp-block-heading" id="таблица-типов">Таблица типов</h2>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Тип</th>
<th>Пример</th>
<th>Для чего нужен</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>str</code></td>
<td><code>"Python"</code></td>
<td>текст</td>
</tr>
<tr>
<td><code>int</code></td>
<td><code>42</code></td>
<td>целые числа</td>
</tr>
<tr>
<td><code>float</code></td>
<td><code>3.14</code></td>
<td>дробные числа</td>
</tr>
<tr>
<td><code>bool</code></td>
<td><code>True</code></td>
<td>логика</td>
</tr>
<tr>
<td><code>NoneType</code></td>
<td><code>None</code></td>
<td>отсутствие значения</td>
</tr>
<tr>
<td><code>list</code></td>
<td><code>[1, 2, 3]</code></td>
<td>изменяемый список</td>
</tr>
<tr>
<td><code>tuple</code></td>
<td><code>(10, 20)</code></td>
<td>фиксированная группа</td>
</tr>
<tr>
<td><code>dict</code></td>
<td><code>{"name": "Анна"}</code></td>
<td>значения по ключам</td>
</tr>
<tr>
<td><code>set</code></td>
<td><code>{"python", "sql"}</code></td>
<td>уникальные значения</td>
</tr>
</tbody>
</table>
</figure>
<h2 class="wp-block-heading" id="проверка-типа">Проверка типа</h2>
<pre class="wp-block-code"><code class="language-python">value = ["python", "sql"]

print(type(value))
print(isinstance(value, list))</code></pre>
<p><code>type()</code> показывает конкретный тип. <code>isinstance()</code> удобнее для проверок в условиях</p>
<h2 class="wp-block-heading" id="строки">Строки</h2>
<pre class="wp-block-code"><code class="language-python">text = "  Python  "

print(text.strip())
print(text.lower())
print(len(text))</code></pre>
<p>Строка подходит для текста, адресов, названий, сообщений и данных, которые еще не превращены в число</p>
<h2 class="wp-block-heading" id="числа">Числа</h2>
<pre class="wp-block-code"><code class="language-python">price = 1200
quantity = 3

print(price * quantity)
print(price / quantity)</code></pre>
<p>Если число пришло из <code>input()</code> или файла, оно часто будет строкой</p>
<pre class="wp-block-code"><code class="language-python">value = "42"
print(int(value) + 1)</code></pre>
<h2 class="wp-block-heading" id="логика-и-none">Логика и None</h2>
<pre class="wp-block-code"><code class="language-python">is_active = True
city = None

if city is None:
    print("город не указан")</code></pre>
<p><code>None</code> лучше проверять через <code>is None</code>, а не через <code>==</code></p>
<h2 class="wp-block-heading" id="списки-и-кортежи">Списки и кортежи</h2>
<pre class="wp-block-code"><code class="language-python">items = ["python", "sql"]
point = (10, 20)

items.append("html")
x, y = point

print(items)
print(x, y)</code></pre>
<p>Список используют, когда данные будут меняться. Кортеж используют для фиксированной пары или группы значений</p>
<div>
</div>
<h2 class="wp-block-heading" id="словари">Словари</h2>
<pre class="wp-block-code"><code class="language-python">profile = {
    "name": "Анна",
    "age": 28,
    "skills": ["Python", "SQL"],
}

print(profile["name"])
print(profile.get("city", "город не указан"))</code></pre>
<p>Словарь подходит для карточек, настроек, строк таблицы и данных из API</p>
<h2 class="wp-block-heading" id="множества">Множества</h2>
<pre class="wp-block-code"><code class="language-python">skills = ["python", "sql", "python"]
unique_skills = set(skills)

print(unique_skills)</code></pre>
<p>Множество убирает повторы и быстро проверяет наличие значения</p>
<h2 class="wp-block-heading" id="преобразования-типов">Преобразования типов</h2>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Нужно получить</th>
<th>Пример</th>
</tr>
</thead>
<tbody>
<tr>
<td>число</td>
<td><code>int("42")</code></td>
</tr>
<tr>
<td>дробное число</td>
<td><code>float("3.14")</code></td>
</tr>
<tr>
<td>строку</td>
<td><code>str(42)</code></td>
</tr>
<tr>
<td>список</td>
<td><code>list("abc")</code></td>
</tr>
<tr>
<td>множество</td>
<td><code>set(items)</code></td>
</tr>
</tbody>
</table>
</figure>
<h2 class="wp-block-heading" id="одна-задача-на-несколько-типов">Одна задача на несколько типов</h2>
<p>Типы данных лучше запоминаются, когда работают вместе. Ниже пример анкеты пользователя: строка, число, список, словарь, логическое значение и <code>None</code></p>
<pre class="wp-block-code"><code class="language-python">profile = {
    "name": "Анна",
    "age": 28,
    "skills": ["python", "sql"],
    "active": True,
    "telegram": None,
}

print(profile["name"])
print(profile["age"] + 1)
print(", ".join(profile["skills"]))
print(profile["telegram"] is None)</code></pre>
<p>Если поменять тип, поменяется и допустимое действие. Со строкой можно делать <code>lower</code>, с числом — сложение, со списком — <code>append</code>, со словарем — доступ по ключу</p>
<h2 class="wp-block-heading" id="как-выбирать-тип">Как выбирать тип</h2>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Ситуация</th>
<th>Подходящий тип</th>
<th>Пример</th>
</tr>
</thead>
<tbody>
<tr>
<td>нужно хранить имя</td>
<td><code>str</code></td>
<td><code>"Анна"</code></td>
</tr>
<tr>
<td>нужна сумма или возраст</td>
<td><code>int</code> или <code>float</code></td>
<td><code>1200</code>, <code>3.14</code></td>
</tr>
<tr>
<td>нужно да или нет</td>
<td><code>bool</code></td>
<td><code>True</code></td>
</tr>
<tr>
<td>значения нет</td>
<td><code>None</code></td>
<td><code>telegram = None</code></td>
</tr>
<tr>
<td>несколько элементов по порядку</td>
<td><code>list</code></td>
<td><code>["python", "sql"]</code></td>
</tr>
<tr>
<td>запись с полями</td>
<td><code>dict</code></td>
<td><code>{"name": "Анна"}</code></td>
</tr>
<tr>
<td>только уникальные значения</td>
<td><code>set</code></td>
<td><code>{"python", "sql"}</code></td>
</tr>
</tbody>
</table>
</figure>
<h2 class="wp-block-heading" id="преобразования-и-проверки">Преобразования и проверки</h2>
<pre class="wp-block-code"><code class="language-python">age_text = "28"
price_text = "1490.50"

age = int(age_text)
price = float(price_text)

print(age + 1)
print(price * 2)
print(isinstance(age, int))</code></pre>
<p>Перед преобразованием пользовательского ввода лучше проверять данные. Для учебных задач достаточно простого условия, в реальном проекте нужна аккуратная валидация</p>
<pre class="wp-block-code"><code class="language-python">value = "42"

if value.isdigit():
    print(int(value))
else:
    print("Это не целое число")</code></pre>
<h2 class="wp-block-heading" id="частая-путаница">Частая путаница</h2>
<p><code>"42"</code> и <code>42</code> выглядят похоже, но это разные типы. Строка склеивается со строкой, число складывается с числом. Когда результат странный, первым делом выводите <code>type(value)</code></p>
<h2 class="wp-block-heading" id="частые-ошибки">Частые ошибки</h2>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Ошибка</th>
<th>Почему случается</th>
</tr>
</thead>
<tbody>
<tr>
<td>сложить строку и число</td>
<td>значение из <code>input()</code> не преобразовали</td>
</tr>
<tr>
<td>изменить кортеж</td>
<td>кортеж не меняется на месте</td>
</tr>
<tr>
<td>прочитать отсутствующий ключ</td>
<td>в словаре нет такого поля</td>
</tr>
<tr>
<td>ждать порядок от <code>set</code></td>
<td>множество хранит уникальность, а не порядок</td>
</tr>
<tr>
<td>вызвать метод строки у списка</td>
<td>перепутан тип значения</td>
</tr>
</tbody>
</table>
</figure>
<div>
</div>
<p>The post <a href="https://faq-develop.ru/jazyki-programmirovanija/python/spargalka-bazovye-tipy-dannyh-v-python/">Шпаргалка: базовые типы данных в Python</a> appeared first on <a href="https://faq-develop.ru">FAQ Develop</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://faq-develop.ru/jazyki-programmirovanija/python/spargalka-bazovye-tipy-dannyh-v-python/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Регулярные выражения в Python: практика поиска, замены и групп</title>
		<link>https://faq-develop.ru/jazyki-programmirovanija/python/regulyarnye-vyrazheniya-v-python-praktika-poiska-zameny-i-grupp/</link>
					<comments>https://faq-develop.ru/jazyki-programmirovanija/python/regulyarnye-vyrazheniya-v-python-praktika-poiska-zameny-i-grupp/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 03 Jul 2026 10:26:55 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://faq-develop.ru/%d0%b1%d0%b5%d0%b7-%d1%80%d1%83%d0%b1%d1%80%d0%b8%d0%ba%d0%b8/regulyarnye-vyrazheniya-v-python-praktika-poiska-zameny-i-grupp/</guid>

					<description><![CDATA[<p>Этот материал нужен не для запоминания всех символов regex, а для трех практических действий: найти фрагмент, заменить лишнее и достать нужную группу из строки По этой теме полезно отдельно посмотреть Составьте еженедельное расписание занятий, чтобы расширить контекст и сравнить подходы По этой теме полезно отдельно посмотреть Аннотации типов для декораторов в Python, чтобы расширить контекст […]</p>
<p>The post <a href="https://faq-develop.ru/jazyki-programmirovanija/python/regulyarnye-vyrazheniya-v-python-praktika-poiska-zameny-i-grupp/">Регулярные выражения в Python: практика поиска, замены и групп</a> appeared first on <a href="https://faq-develop.ru">FAQ Develop</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Этот материал нужен не для запоминания всех символов regex, а для трех практических действий: найти фрагмент, заменить лишнее и достать нужную группу из строки</p>
<blockquote class="wp-block-quote">
<p>По этой теме полезно отдельно посмотреть <a href="/jazyki-programmirovanija/python/sostavte-ezhenedelnoe-raspisanie-zanyatij/">Составьте еженедельное расписание занятий</a>, чтобы расширить контекст и сравнить подходы</p>
</blockquote>
<blockquote class="wp-block-quote">
<p>По этой теме полезно отдельно посмотреть <a href="/jazyki-programmirovanija/python/annotatsii-tipov-dlya-dekoratorov-v-python/">Аннотации типов для декораторов в Python</a>, чтобы расширить контекст и сравнить подходы</p>
</blockquote>
<h2 class="wp-block-heading" id="поиск-первого-совпадения">Поиск первого совпадения</h2>
<pre class="wp-block-code"><code class="language-python">import re

text = "Заказ 125 оформлен"
match = re.search(r"\d+", text)

if match:
    print(match.group())</code></pre>
<p><code>search</code> возвращает объект совпадения или <code>None</code>. Поэтому перед <code>group()</code> нужна проверка</p>
<h2 class="wp-block-heading" id="поиск-всех-совпадений">Поиск всех совпадений</h2>
<pre class="wp-block-code"><code class="language-python">import re

text = "Заказы 125, 340 и 77"
numbers = re.findall(r"\d+", text)

print(numbers)</code></pre>
<p>Если нужны числа, преобразуйте строки</p>
<pre class="wp-block-code"><code class="language-python">numbers = [int(number) for number in numbers]
print(sum(numbers))</code></pre>
<h2 class="wp-block-heading" id="замена">Замена</h2>
<pre class="wp-block-code"><code class="language-python">import re

text = "много     пробелов"
clean = re.sub(r"\s+", " ", text).strip()

print(clean)</code></pre>
<p><code>sub</code> возвращает новую строку. Исходная строка не меняется</p>
<h2 class="wp-block-heading" id="группы">Группы</h2>
<pre class="wp-block-code"><code class="language-python">import re

text = "order=125; email=anna@example.com"

order = re.search(r"order=(\d+)", text)
email = re.search(r"email=([\w.-]+@[\w.-]+)", text)

print(order.group(1) if order else "заказ не найден")
print(email.group(1) if email else "email не найден")</code></pre>
<p>Скобки в шаблоне обозначают часть, которую нужно достать отдельно</p>
<h2 class="wp-block-heading" id="именованные-группы">Именованные группы</h2>
<pre class="wp-block-code"><code class="language-python">import re

text = "2026-07-03"
match = re.search(r"(?P&lt;year&gt;\d{4})-(?P&lt;month&gt;\d{2})-(?P&lt;day&gt;\d{2})", text)

if match:
    print(match.group("year"))
    print(match.group("month"))
    print(match.group("day"))</code></pre>
<p>Именованные группы удобны, когда частей несколько и номера становятся неочевидными</p>
<h2 class="wp-block-heading" id="флаги">Флаги</h2>
<pre class="wp-block-code"><code class="language-python">import re

text = "Python\npython\nPYTHON"
matches = re.findall(r"python", text, flags=re.IGNORECASE)

print(matches)</code></pre>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Флаг</th>
<th>Что делает</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>re.IGNORECASE</code></td>
<td>не учитывать регистр</td>
</tr>
<tr>
<td><code>re.MULTILINE</code></td>
<td><code>^</code> и <code>$</code> работают по строкам</td>
</tr>
<tr>
<td><code>re.DOTALL</code></td>
<td>точка захватывает перевод строки</td>
</tr>
</tbody>
</table>
</figure>
<div>
</div>
<h2 class="wp-block-heading" id="отладка-шаблона">Отладка шаблона</h2>
<p>Проверяйте шаблон на трех строках: правильной, пустой и неправильной</p>
<pre class="wp-block-code"><code class="language-python">import re

samples = ["order=125", "", "order=abc"]
pattern = r"order=(\d+)"

for sample in samples:
    match = re.search(pattern, sample)
    print(sample, "=&gt;", match.group(1) if match else "нет")</code></pre>
<h2 class="wp-block-heading" id="когда-regex-не-нужен">Когда regex не нужен</h2>
<p>Если задача простая, обычные методы строк читаются лучше</p>
<pre class="wp-block-code"><code class="language-python">text = "python,sql,html"
items = text.split(",")

print(items)</code></pre>
<p>Используйте регулярные выражения там, где нужен шаблон: цифры разной длины, формат даты, email, телефон, группы внутри строки</p>
<h2 class="wp-block-heading" id="разбор-шаблона-по-частям">Разбор шаблона по частям</h2>
<p>Регулярное выражение легче понимать, если проговаривать каждый фрагмент. Возьмем строку заказа и достанем номер, город и сумму</p>
<pre class="wp-block-code"><code class="language-python">import re

text = "order=104 city=Kazan amount=1490"
pattern = r"order=(?P&lt;order&gt;\d+)\s+city=(?P&lt;city&gt;[A-Za-z]+)\s+amount=(?P&lt;amount&gt;\d+)"

match = re.fullmatch(pattern, text)

if match:
    data = match.groupdict()
    data["amount"] = int(data["amount"])
    print(data)</code></pre>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Фрагмент</th>
<th>Значение</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>order=</code></td>
<td>обычный текст</td>
</tr>
<tr>
<td><code>(?P&lt;order&gt;\d+)</code></td>
<td>группа с номером заказа</td>
</tr>
<tr>
<td><code>\s+</code></td>
<td>один или несколько пробелов</td>
</tr>
<tr>
<td><code>[A-Za-z]+</code></td>
<td>английские буквы</td>
</tr>
<tr>
<td><code>amount=(?P&lt;amount&gt;\d+)</code></td>
<td>сумма отдельной группой</td>
</tr>
</tbody>
</table>
</figure>
<h2 class="wp-block-heading" id="практика-замены">Практика замены</h2>
<p><code>re.sub()</code> полезен, когда нужно не просто найти, а привести текст к единому виду</p>
<pre class="wp-block-code"><code class="language-python">import re

phone = "+7 (999) 123-45-67"
digits = re.sub(r"\D+", "", phone)

print(digits)</code></pre>
<p>После очистки можно проверить длину или формат</p>
<pre class="wp-block-code"><code class="language-python">if len(digits) == 11 and digits.startswith("7"):
    print("номер похож на российский")
else:
    print("нужно проверить вручную")</code></pre>
<h2 class="wp-block-heading" id="поиск-нескольких-совпадений-с-позициями">Поиск нескольких совпадений с позициями</h2>
<p><code>finditer</code> удобен, когда важен не только текст совпадения, но и место в строке</p>
<pre class="wp-block-code"><code class="language-python">import re

text = "Python 3.12, Django 5, Pandas 2"

for match in re.finditer(r"\d+(?:\.\d+)?", text):
    print(match.group(), match.start(), match.end())</code></pre>
<p>Так можно подсветить совпадения, вырезать фрагменты или понять, почему шаблон нашел не то место</p>
<div>
</div>
<p>The post <a href="https://faq-develop.ru/jazyki-programmirovanija/python/regulyarnye-vyrazheniya-v-python-praktika-poiska-zameny-i-grupp/">Регулярные выражения в Python: практика поиска, замены и групп</a> appeared first on <a href="https://faq-develop.ru">FAQ Develop</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://faq-develop.ru/jazyki-programmirovanija/python/regulyarnye-vyrazheniya-v-python-praktika-poiska-zameny-i-grupp/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Python шпаргалка со всеми ключевыми словами</title>
		<link>https://faq-develop.ru/jazyki-programmirovanija/python/python-spargalka-so-vsemi-klucevymi-slovami/</link>
					<comments>https://faq-develop.ru/jazyki-programmirovanija/python/python-spargalka-so-vsemi-klucevymi-slovami/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 03 Jul 2026 10:26:47 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://faq-develop.ru/%d0%b1%d0%b5%d0%b7-%d1%80%d1%83%d0%b1%d1%80%d0%b8%d0%ba%d0%b8/python-spargalka-so-vsemi-klucevymi-slovami/</guid>

					<description><![CDATA[<p>Ключевые слова Python нельзя использовать как имена переменных, функций и классов. Они управляют синтаксисом языка: условиями, циклами, функциями, классами, импортом, ошибками и асинхронным кодом Проверить актуальный список для своей версии Python можно так По этой теме полезно отдельно посмотреть Составьте еженедельное расписание занятий, чтобы расширить контекст и сравнить подходы По этой теме полезно отдельно посмотреть […]</p>
<p>The post <a href="https://faq-develop.ru/jazyki-programmirovanija/python/python-spargalka-so-vsemi-klucevymi-slovami/">Python шпаргалка со всеми ключевыми словами</a> appeared first on <a href="https://faq-develop.ru">FAQ Develop</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Ключевые слова Python нельзя использовать как имена переменных, функций и классов. Они управляют синтаксисом языка: условиями, циклами, функциями, классами, импортом, ошибками и асинхронным кодом</p>
<p>Проверить актуальный список для своей версии Python можно так</p>
<pre class="wp-block-code"><code class="language-python">import keyword

print(keyword.kwlist)
print(keyword.softkwlist)</code></pre>
<blockquote class="wp-block-quote">
<p>По этой теме полезно отдельно посмотреть <a href="/jazyki-programmirovanija/python/sostavte-ezhenedelnoe-raspisanie-zanyatij/">Составьте еженедельное расписание занятий</a>, чтобы расширить контекст и сравнить подходы</p>
</blockquote>
<blockquote class="wp-block-quote">
<p>По этой теме полезно отдельно посмотреть <a href="/jazyki-programmirovanija/python/annotatsii-tipov-dlya-dekoratorov-v-python/">Аннотации типов для декораторов в Python</a>, чтобы расширить контекст и сравнить подходы</p>
</blockquote>
<h2 class="wp-block-heading" id="логика-и-условия">Логика и условия</h2>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Слово</th>
<th>Для чего нужно</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>if</code></td>
<td>условие</td>
</tr>
<tr>
<td><code>elif</code></td>
<td>дополнительное условие</td>
</tr>
<tr>
<td><code>else</code></td>
<td>ветка по умолчанию</td>
</tr>
<tr>
<td><code>and</code></td>
<td>оба условия истинны</td>
</tr>
<tr>
<td><code>or</code></td>
<td>хотя бы одно условие истинно</td>
</tr>
<tr>
<td><code>not</code></td>
<td>отрицание</td>
</tr>
<tr>
<td><code>is</code></td>
<td>сравнение идентичности</td>
</tr>
<tr>
<td><code>in</code></td>
<td>проверка вхождения</td>
</tr>
<tr>
<td><code>True</code></td>
<td>истина</td>
</tr>
<tr>
<td><code>False</code></td>
<td>ложь</td>
</tr>
<tr>
<td><code>None</code></td>
<td>отсутствие значения</td>
</tr>
</tbody>
</table>
</figure>
<pre class="wp-block-code"><code class="language-python">value = None

if value is None:
    print("значения нет")</code></pre>
<h2 class="wp-block-heading" id="циклы">Циклы</h2>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Слово</th>
<th>Для чего нужно</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>for</code></td>
<td>цикл по коллекции</td>
</tr>
<tr>
<td><code>while</code></td>
<td>цикл по условию</td>
</tr>
<tr>
<td><code>break</code></td>
<td>остановить цикл</td>
</tr>
<tr>
<td><code>continue</code></td>
<td>перейти к следующему шагу</td>
</tr>
</tbody>
</table>
</figure>
<pre class="wp-block-code"><code class="language-python">for number in range(1, 4):
    if number == 2:
        continue
    print(number)</code></pre>
<h2 class="wp-block-heading" id="функции-и-классы">Функции и классы</h2>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Слово</th>
<th>Для чего нужно</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>def</code></td>
<td>объявить функцию</td>
</tr>
<tr>
<td><code>return</code></td>
<td>вернуть результат</td>
</tr>
<tr>
<td><code>lambda</code></td>
<td>короткая анонимная функция</td>
</tr>
<tr>
<td><code>yield</code></td>
<td>вернуть значение из генератора</td>
</tr>
<tr>
<td><code>class</code></td>
<td>объявить класс</td>
</tr>
<tr>
<td><code>pass</code></td>
<td>пустой блок</td>
</tr>
</tbody>
</table>
</figure>
<pre class="wp-block-code"><code class="language-python">def double(number):
    return number * 2

print(double(5))</code></pre>
<h2 class="wp-block-heading" id="ошибки-и-контекст">Ошибки и контекст</h2>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Слово</th>
<th>Для чего нужно</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>try</code></td>
<td>выполнить рискованный код</td>
</tr>
<tr>
<td><code>except</code></td>
<td>обработать ошибку</td>
</tr>
<tr>
<td><code>finally</code></td>
<td>выполнить блок в конце</td>
</tr>
<tr>
<td><code>raise</code></td>
<td>вызвать ошибку</td>
</tr>
<tr>
<td><code>assert</code></td>
<td>проверить предположение</td>
</tr>
<tr>
<td><code>with</code></td>
<td>открыть контекст</td>
</tr>
<tr>
<td><code>as</code></td>
<td>дать имя внутри контекста или импорта</td>
</tr>
</tbody>
</table>
</figure>
<pre class="wp-block-code"><code class="language-python">try:
    value = int("42")
except ValueError:
    value = 0

print(value)</code></pre>
<h2 class="wp-block-heading" id="импорт-и-область-видимости">Импорт и область видимости</h2>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Слово</th>
<th>Для чего нужно</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>import</code></td>
<td>подключить модуль</td>
</tr>
<tr>
<td><code>from</code></td>
<td>импортировать из модуля</td>
</tr>
<tr>
<td><code>global</code></td>
<td>обратиться к глобальному имени</td>
</tr>
<tr>
<td><code>nonlocal</code></td>
<td>обратиться к имени из внешней функции</td>
</tr>
<tr>
<td><code>del</code></td>
<td>удалить имя или элемент</td>
</tr>
</tbody>
</table>
</figure>
<pre class="wp-block-code"><code class="language-python">from pathlib import Path

print(Path.cwd())</code></pre>
<h2 class="wp-block-heading" id="асинхронность">Асинхронность</h2>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Слово</th>
<th>Для чего нужно</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>async</code></td>
<td>объявить асинхронную функцию</td>
</tr>
<tr>
<td><code>await</code></td>
<td>дождаться результата</td>
</tr>
</tbody>
</table>
</figure>
<p>Эти слова нужны в асинхронном коде: сетевые запросы, боты, серверы, параллельное ожидание операций</p>
<div>
</div>
<h2 class="wp-block-heading" id="soft-keywords">Soft keywords</h2>
<p><code>match</code>, <code>case</code> и <code>_</code> могут иметь специальный смысл в сопоставлении с образцом, но не всегда ведут себя как обычные зарезервированные слова</p>
<pre class="wp-block-code"><code class="language-python">status = "ready"

match status:
    case "ready":
        print("готово")
    case _:
        print("другой статус")</code></pre>
<h2 class="wp-block-heading" id="ключевые-слова-и-встроенные-имена">Ключевые слова и встроенные имена</h2>
<p><code>list</code>, <code>dict</code>, <code>str</code>, <code>sum</code>, <code>type</code>, <code>id</code> не являются ключевыми словами, но это встроенные имена. Их лучше не использовать как переменные</p>
<pre class="wp-block-code"><code class="language-python">items = [1, 2, 3]
print(sum(items))</code></pre>
<p>Плохой вариант</p>
<pre class="wp-block-code"><code class="language-python">sum = 10</code></pre>
<p>Так код перекрывает встроенную функцию <code>sum</code></p>
<h2 class="wp-block-heading" id="проверка-имени-переменной">Проверка имени переменной</h2>
<pre class="wp-block-code"><code class="language-python">import keyword

names = ["class", "user_name", "for", "total"]

for name in names:
    print(name, keyword.iskeyword(name))</code></pre>
<h2 class="wp-block-heading" id="почему-ключевые-слова-нельзя-учить-списком">Почему ключевые слова нельзя учить списком</h2>
<p>Ключевые слова Python лучше группировать по смыслу. Тогда становится понятно, где они появляются в коде и почему их нельзя использовать как имена переменных</p>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Группа</th>
<th>Слова</th>
<th>Где встречаются</th>
</tr>
</thead>
<tbody>
<tr>
<td>условия</td>
<td><code>if</code>, <code>elif</code>, <code>else</code>, <code>match</code>, <code>case</code></td>
<td>выбор ветки</td>
</tr>
<tr>
<td>циклы</td>
<td><code>for</code>, <code>while</code>, <code>break</code>, <code>continue</code></td>
<td>повторение действий</td>
</tr>
<tr>
<td>функции</td>
<td><code>def</code>, <code>return</code>, <code>lambda</code>, <code>yield</code></td>
<td>создание поведения</td>
</tr>
<tr>
<td>классы</td>
<td><code>class</code>, <code>self</code> не keyword</td>
<td>описание объектов</td>
</tr>
<tr>
<td>ошибки</td>
<td><code>try</code>, <code>except</code>, <code>finally</code>, <code>raise</code>, <code>assert</code></td>
<td>обработка проблем</td>
</tr>
<tr>
<td>импорт</td>
<td><code>import</code>, <code>from</code>, <code>as</code></td>
<td>подключение модулей</td>
</tr>
<tr>
<td>логика</td>
<td><code>and</code>, <code>or</code>, <code>not</code>, <code>is</code>, <code>in</code></td>
<td>условия и сравнения</td>
</tr>
<tr>
<td>контекст</td>
<td><code>with</code></td>
<td>безопасная работа с ресурсами</td>
</tr>
</tbody>
</table>
</figure>
<pre class="wp-block-code"><code class="language-python">import keyword

print(keyword.kwlist)
print(keyword.iskeyword("class"))
print(keyword.iskeyword("username"))</code></pre>
<h2 class="wp-block-heading" id="как-keyword-ломает-переменную">Как keyword ломает переменную</h2>
<p>Если назвать переменную ключевым словом, Python не сможет понять код</p>
<pre class="wp-block-code"><code class="language-python"># так нельзя
# class = "Python"

class_name = "Python"
print(class_name)</code></pre>
<p>Похожая проблема бывает со встроенными именами. <code>list</code>, <code>dict</code>, <code>str</code>, <code>sum</code> не являются ключевыми словами, но использовать их как переменные все равно плохая идея</p>
<pre class="wp-block-code"><code class="language-python">items = [1, 2, 3]
total = sum(items)

print(total)</code></pre>
<h2 class="wp-block-heading" id="где-встречаются-редкие-слова">Где встречаются редкие слова</h2>
<p><code>yield</code> нужен для генераторов, <code>global</code> и <code>nonlocal</code> меняют область видимости, <code>async</code> и <code>await</code> используются в асинхронном коде. Новичку не обязательно сразу применять их в проектах, но полезно узнавать их при чтении чужого кода</p>
<pre class="wp-block-code"><code class="language-python">def numbers():
    yield 1
    yield 2

for number in numbers():
    print(number)</code></pre>
<h2 class="wp-block-heading" id="самопроверка">Самопроверка</h2>
<p>Возьмите любое имя переменной и проверьте его через <code>keyword.iskeyword()</code>. Потом проверьте, не совпадает ли оно с популярными встроенными именами: <code>list</code>, <code>dict</code>, <code>str</code>, <code>int</code>, <code>sum</code>, <code>max</code>, <code>min</code>, <code>input</code>, <code>print</code></p>
<div>
</div>
<p>The post <a href="https://faq-develop.ru/jazyki-programmirovanija/python/python-spargalka-so-vsemi-klucevymi-slovami/">Python шпаргалка со всеми ключевыми словами</a> appeared first on <a href="https://faq-develop.ru">FAQ Develop</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://faq-develop.ru/jazyki-programmirovanija/python/python-spargalka-so-vsemi-klucevymi-slovami/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Команды Питон: таблица для новичка</title>
		<link>https://faq-develop.ru/jazyki-programmirovanija/python/komandy-piton-tablica-dla-novicka/</link>
					<comments>https://faq-develop.ru/jazyki-programmirovanija/python/komandy-piton-tablica-dla-novicka/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 03 Jul 2026 10:26:41 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://faq-develop.ru/%d0%b1%d0%b5%d0%b7-%d1%80%d1%83%d0%b1%d1%80%d0%b8%d0%ba%d0%b8/komandy-piton-tablica-dla-novicka/</guid>

					<description><![CDATA[<p>Новичку нужна не просто длинная таблица команд, а быстрый способ понять: что написать, зачем это нужно и какой результат ожидать. Ниже собраны команды Python, которые чаще всего встречаются в первых задачах По этой теме полезно отдельно посмотреть Составьте еженедельное расписание занятий, чтобы расширить контекст и сравнить подходы По этой теме полезно отдельно посмотреть Аннотации типов […]</p>
<p>The post <a href="https://faq-develop.ru/jazyki-programmirovanija/python/komandy-piton-tablica-dla-novicka/">Команды Питон: таблица для новичка</a> appeared first on <a href="https://faq-develop.ru">FAQ Develop</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Новичку нужна не просто длинная таблица команд, а быстрый способ понять: что написать, зачем это нужно и какой результат ожидать. Ниже собраны команды Python, которые чаще всего встречаются в первых задачах</p>
<blockquote class="wp-block-quote">
<p>По этой теме полезно отдельно посмотреть <a href="/jazyki-programmirovanija/python/sostavte-ezhenedelnoe-raspisanie-zanyatij/">Составьте еженедельное расписание занятий</a>, чтобы расширить контекст и сравнить подходы</p>
</blockquote>
<blockquote class="wp-block-quote">
<p>По этой теме полезно отдельно посмотреть <a href="/jazyki-programmirovanija/python/annotatsii-tipov-dlya-dekoratorov-v-python/">Аннотации типов для декораторов в Python</a>, чтобы расширить контекст и сравнить подходы</p>
</blockquote>
<h2 class="wp-block-heading" id="базовые-команды">Базовые команды</h2>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Задача</th>
<th>Команда</th>
<th>Пример</th>
</tr>
</thead>
<tbody>
<tr>
<td>вывести текст</td>
<td><code>print()</code></td>
<td><code>print("Привет")</code></td>
</tr>
<tr>
<td>получить ввод</td>
<td><code>input()</code></td>
<td><code>name = input("Имя: ")</code></td>
</tr>
<tr>
<td>узнать тип</td>
<td><code>type()</code></td>
<td><code>type(value)</code></td>
</tr>
<tr>
<td>длина</td>
<td><code>len()</code></td>
<td><code>len(items)</code></td>
</tr>
<tr>
<td>преобразовать в число</td>
<td><code>int()</code></td>
<td><code>int("42")</code></td>
</tr>
<tr>
<td>преобразовать в строку</td>
<td><code>str()</code></td>
<td><code>str(42)</code></td>
</tr>
</tbody>
</table>
</figure>
<pre class="wp-block-code"><code class="language-python">name = "Анна"
age = "28"

print(name)
print(int(age) + 1)
print(type(age))</code></pre>
<h2 class="wp-block-heading" id="строки">Строки</h2>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Что сделать</th>
<th>Команда</th>
</tr>
</thead>
<tbody>
<tr>
<td>убрать пробелы</td>
<td><code>text.strip()</code></td>
</tr>
<tr>
<td>нижний регистр</td>
<td><code>text.lower()</code></td>
</tr>
<tr>
<td>заменить фрагмент</td>
<td><code>text.replace("а", "б")</code></td>
</tr>
<tr>
<td>разбить строку</td>
<td><code>text.split(",")</code></td>
</tr>
<tr>
<td>собрать строку</td>
<td><code>", ".join(items)</code></td>
</tr>
</tbody>
</table>
</figure>
<pre class="wp-block-code"><code class="language-python">text = "  Python, SQL  "
items = [item.strip().lower() for item in text.strip().split(",")]

print(items)</code></pre>
<h2 class="wp-block-heading" id="списки">Списки</h2>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Что сделать</th>
<th>Команда</th>
</tr>
</thead>
<tbody>
<tr>
<td>добавить</td>
<td><code>items.append(value)</code></td>
</tr>
<tr>
<td>удалить по значению</td>
<td><code>items.remove(value)</code></td>
</tr>
<tr>
<td>удалить по индексу</td>
<td><code>items.pop(index)</code></td>
</tr>
<tr>
<td>перебрать</td>
<td><code>for item in items:</code></td>
</tr>
<tr>
<td>номер и значение</td>
<td><code>enumerate(items, start=1)</code></td>
</tr>
<tr>
<td>отсортировать</td>
<td><code>sorted(items)</code></td>
</tr>
</tbody>
</table>
</figure>
<pre class="wp-block-code"><code class="language-python">tasks = ["код", "тест"]
tasks.append("публикация")

for number, task in enumerate(tasks, start=1):
    print(number, task)</code></pre>
<h2 class="wp-block-heading" id="словари">Словари</h2>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Что сделать</th>
<th>Команда</th>
</tr>
</thead>
<tbody>
<tr>
<td>прочитать ключ</td>
<td><code>user["name"]</code></td>
</tr>
<tr>
<td>прочитать безопасно</td>
<td><code>user.get("city", "")</code></td>
</tr>
<tr>
<td>добавить ключ</td>
<td><code>user["email"] = value</code></td>
</tr>
<tr>
<td>проверить ключ</td>
<td><code>"city" in user</code></td>
</tr>
<tr>
<td>пары ключ-значение</td>
<td><code>user.items()</code></td>
</tr>
</tbody>
</table>
</figure>
<pre class="wp-block-code"><code class="language-python">user = {"name": "Анна", "city": "Казань"}

print(user["name"])
print(user.get("email", "email не указан"))

for key, value in user.items():
    print(key, value)</code></pre>
<h2 class="wp-block-heading" id="условия-и-циклы">Условия и циклы</h2>
<pre class="wp-block-code"><code class="language-python">numbers = [1, 2, 3, 4]

for number in numbers:
    if number % 2 == 0:
        print(number)</code></pre>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Конструкция</th>
<th>Когда нужна</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>if</code></td>
<td>выбрать ветку</td>
</tr>
<tr>
<td><code>elif</code></td>
<td>добавить вариант</td>
</tr>
<tr>
<td><code>else</code></td>
<td>вариант по умолчанию</td>
</tr>
<tr>
<td><code>for</code></td>
<td>пройти по коллекции</td>
</tr>
<tr>
<td><code>while</code></td>
<td>повторять по условию</td>
</tr>
<tr>
<td><code>break</code></td>
<td>остановить цикл</td>
</tr>
<tr>
<td><code>continue</code></td>
<td>пропустить шаг</td>
</tr>
</tbody>
</table>
</figure>
<h2 class="wp-block-heading" id="функции">Функции</h2>
<pre class="wp-block-code"><code class="language-python">def normalize(text):
    return text.strip().lower()

print(normalize(" Python "))</code></pre>
<p>Функция нужна, когда одно действие повторяется или его хочется назвать понятным словом</p>
<div>
</div>
<h2 class="wp-block-heading" id="файлы">Файлы</h2>
<pre class="wp-block-code"><code class="language-python">from pathlib import Path

path = Path("notes.txt")
path.write_text("python\nsql", encoding="utf-8")

print(path.read_text(encoding="utf-8"))</code></pre>
<h2 class="wp-block-heading" id="команды-которые-стоит-набрать-руками">Команды, которые стоит набрать руками</h2>
<pre class="wp-block-code"><code class="language-python">text = "  Python  "
number = "42"
items = ["a", "b"]

print(text.strip())
print(int(number) + 1)
print(len(items))</code></pre>
<p>Если эти три строки понятны, дальше проще читать почти любой первый учебный скрипт</p>
<h2 class="wp-block-heading" id="как-пользоваться-таблицей-команд">Как пользоваться таблицей команд</h2>
<p>Таблица команд работает только тогда, когда рядом есть маленькая задача. Например: принять имя, возраст, список навыков и вывести аккуратное сообщение. В этой задаче сразу встречаются ввод, преобразование типа, список, цикл и форматирование строки</p>
<pre class="wp-block-code"><code class="language-python">name = input("Имя: ").strip()
age = int(input("Возраст: "))
skills_text = input("Навыки через запятую: ")

skills = []

for item in skills_text.split(","):
    skill = item.strip().lower()
    if skill:
        skills.append(skill)

print(f"{name}, через год вам будет {age + 1}")
print("Навыки:")

for number, skill in enumerate(skills, start=1):
    print(f"{number}. {skill}")</code></pre>
<p>Если этот код понятен, команды из таблицы перестают быть разрозненными словами. Они собираются в обычный сценарий: получить данные, привести в порядок, вывести результат</p>
<h2 class="wp-block-heading" id="команды-для-проверки-данных">Команды для проверки данных</h2>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Что проверить</th>
<th>Команда</th>
<th>Пример</th>
</tr>
</thead>
<tbody>
<tr>
<td>строка пустая или нет</td>
<td><code>if text:</code></td>
<td><code>if name:</code></td>
</tr>
<tr>
<td>строка состоит из цифр</td>
<td><code>isdigit()</code></td>
<td><code>"42".isdigit()</code></td>
</tr>
<tr>
<td>элемент есть в списке</td>
<td><code>in</code></td>
<td><code>"python" in skills</code></td>
</tr>
<tr>
<td>ключ есть в словаре</td>
<td><code>in</code></td>
<td><code>"email" in user</code></td>
</tr>
<tr>
<td>значение является списком</td>
<td><code>isinstance()</code></td>
<td><code>isinstance(items, list)</code></td>
</tr>
</tbody>
</table>
</figure>
<pre class="wp-block-code"><code class="language-python">age_text = "28"

if age_text.isdigit():
    age = int(age_text)
    print(age)
else:
    print("Введите число")</code></pre>
<h2 class="wp-block-heading" id="мини-скрипт-дневник-задач">Мини-скрипт: дневник задач</h2>
<p>Этот пример можно набрать целиком и менять под себя</p>
<pre class="wp-block-code"><code class="language-python">tasks = []

while True:
    task = input("Задача или stop: ").strip()

    if task == "stop":
        break

    if task:
        tasks.append(task)

for number, task in enumerate(tasks, start=1):
    print(f"{number}. {task}")</code></pre>
<p>Здесь есть <code>while</code>, <code>break</code>, проверка пустого ввода, список и <code>enumerate</code>. Это небольшой, но уже настоящий учебный скрипт</p>
<h2 class="wp-block-heading" id="частые-ошибки-новичка">Частые ошибки новичка</h2>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Ошибка</th>
<th>Почему происходит</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>NameError</code></td>
<td>переменная не создана или написана иначе</td>
</tr>
<tr>
<td><code>TypeError</code></td>
<td>операция не подходит типу</td>
</tr>
<tr>
<td><code>ValueError</code></td>
<td>строка не превращается в число</td>
</tr>
<tr>
<td><code>KeyError</code></td>
<td>ключа нет в словаре</td>
</tr>
<tr>
<td><code>IndexError</code></td>
<td>индекса нет в списке</td>
</tr>
</tbody>
</table>
</figure>
<div>
</div>
<p>The post <a href="https://faq-develop.ru/jazyki-programmirovanija/python/komandy-piton-tablica-dla-novicka/">Команды Питон: таблица для новичка</a> appeared first on <a href="https://faq-develop.ru">FAQ Develop</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://faq-develop.ru/jazyki-programmirovanija/python/komandy-piton-tablica-dla-novicka/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Pandas основные команды: шпаргалка</title>
		<link>https://faq-develop.ru/jazyki-programmirovanija/python/pandas-osnovnye-komandy-spargalka/</link>
					<comments>https://faq-develop.ru/jazyki-programmirovanija/python/pandas-osnovnye-komandy-spargalka/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 03 Jul 2026 10:26:34 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://faq-develop.ru/%d0%b1%d0%b5%d0%b7-%d1%80%d1%83%d0%b1%d1%80%d0%b8%d0%ba%d0%b8/pandas-osnovnye-komandy-spargalka/</guid>

					<description><![CDATA[<p>Эта шпаргалка отвечает на практический запрос: какие команды Pandas чаще всего нужны новичку, чтобы открыть таблицу, посмотреть данные, выбрать нужное, посчитать отчет и сохранить результат По этой теме полезно отдельно посмотреть Составьте еженедельное расписание занятий, чтобы расширить контекст и сравнить подходы По этой теме полезно отдельно посмотреть Аннотации типов для декораторов в Python, чтобы расширить […]</p>
<p>The post <a href="https://faq-develop.ru/jazyki-programmirovanija/python/pandas-osnovnye-komandy-spargalka/">Pandas основные команды: шпаргалка</a> appeared first on <a href="https://faq-develop.ru">FAQ Develop</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Эта шпаргалка отвечает на практический запрос: какие команды Pandas чаще всего нужны новичку, чтобы открыть таблицу, посмотреть данные, выбрать нужное, посчитать отчет и сохранить результат</p>
<blockquote class="wp-block-quote">
<p>По этой теме полезно отдельно посмотреть <a href="/jazyki-programmirovanija/python/sostavte-ezhenedelnoe-raspisanie-zanyatij/">Составьте еженедельное расписание занятий</a>, чтобы расширить контекст и сравнить подходы</p>
</blockquote>
<blockquote class="wp-block-quote">
<p>По этой теме полезно отдельно посмотреть <a href="/jazyki-programmirovanija/python/annotatsii-tipov-dlya-dekoratorov-v-python/">Аннотации типов для декораторов в Python</a>, чтобы расширить контекст и сравнить подходы</p>
</blockquote>
<h2 class="wp-block-heading" id="создать-dataframe-для-примеров">Создать DataFrame для примеров</h2>
<pre class="wp-block-code"><code class="language-python">import pandas as pd

df = pd.DataFrame({
    "city": ["Казань", "Москва", "Казань", "Самара"],
    "orders": [4, 8, 6, 2],
    "revenue": [4000, 12000, 7000, 2500],
})</code></pre>
<h2 class="wp-block-heading" id="таблица-основных-команд">Таблица основных команд</h2>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Команда</th>
<th>Что делает</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>df.head()</code></td>
<td>первые строки</td>
</tr>
<tr>
<td><code>df.tail()</code></td>
<td>последние строки</td>
</tr>
<tr>
<td><code>df.shape</code></td>
<td>размер таблицы</td>
</tr>
<tr>
<td><code>df.info()</code></td>
<td>типы и пропуски</td>
</tr>
<tr>
<td><code>df.describe()</code></td>
<td>статистика по числам</td>
</tr>
<tr>
<td><code>df["city"]</code></td>
<td>одна колонка</td>
</tr>
<tr>
<td><code>df[["city", "orders"]]</code></td>
<td>несколько колонок</td>
</tr>
<tr>
<td><code>df[df["orders"] &gt; 5]</code></td>
<td>фильтр</td>
</tr>
<tr>
<td><code>df.sort_values("revenue")</code></td>
<td>сортировка</td>
</tr>
<tr>
<td><code>df.groupby("city")</code></td>
<td>группировка</td>
</tr>
<tr>
<td><code>df.dropna()</code></td>
<td>удалить строки с пропусками</td>
</tr>
<tr>
<td><code>df.fillna(0)</code></td>
<td>заполнить пропуски</td>
</tr>
<tr>
<td><code>df.to_csv("file.csv")</code></td>
<td>сохранить файл</td>
</tr>
</tbody>
</table>
</figure>
<h2 class="wp-block-heading" id="посмотреть-таблицу">Посмотреть таблицу</h2>
<pre class="wp-block-code"><code class="language-python">print(df.head())
print(df.shape)
print(df.info())</code></pre>
<p>Если команда вернула неожиданность, сначала проверьте названия колонок</p>
<pre class="wp-block-code"><code class="language-python">print(df.columns)</code></pre>
<h2 class="wp-block-heading" id="выбрать-строки-и-колонки">Выбрать строки и колонки</h2>
<pre class="wp-block-code"><code class="language-python">big_orders = df[df["orders"] &gt;= 5]
columns = df[["city", "revenue"]]

print(big_orders)
print(columns)</code></pre>
<h2 class="wp-block-heading" id="посчитать-отчет">Посчитать отчет</h2>
<pre class="wp-block-code"><code class="language-python">report = (
    df.groupby("city", as_index=False)["revenue"]
    .sum()
    .sort_values("revenue", ascending=False)
)

print(report)</code></pre>
<h2 class="wp-block-heading" id="очистить-пропуски">Очистить пропуски</h2>
<pre class="wp-block-code"><code class="language-python">df["orders"] = df["orders"].fillna(0)
df = df.dropna(subset=["city"])</code></pre>
<p><code>fillna</code> подходит, когда пропуск можно заменить. <code>dropna</code> подходит, когда строка без значения бесполезна</p>
<div>
</div>
<h2 class="wp-block-heading" id="сохранить-результат">Сохранить результат</h2>
<pre class="wp-block-code"><code class="language-python">report.to_csv("city-report.csv", index=False, encoding="utf-8")</code></pre>
<h2 class="wp-block-heading" id="как-отлаживать-цепочку">Как отлаживать цепочку</h2>
<p>Не пишите длинную цепочку вслепую. Сохраняйте промежуточный результат</p>
<pre class="wp-block-code"><code class="language-python">filtered = df[df["orders"] &gt; 0]
print(filtered.head())

report = filtered.groupby("city")["orders"].sum()
print(report)</code></pre>
<p>Так проще понять, на каком шаге пропали строки или изменилась форма таблицы</p>
<h2 class="wp-block-heading" id="команды-в-правильной-очередности">Команды в правильной очередности</h2>
<p>Команды Pandas полезнее запоминать не алфавитом, а как маршрут анализа. Почти любая первая задача с таблицей проходит по такой схеме</p>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Этап</th>
<th>Команда</th>
<th>Что проверить</th>
</tr>
</thead>
<tbody>
<tr>
<td>загрузить</td>
<td><code>pd.read_csv()</code></td>
<td>правильная кодировка и разделитель</td>
</tr>
<tr>
<td>посмотреть размер</td>
<td><code>df.shape</code></td>
<td>не пустой ли файл</td>
</tr>
<tr>
<td>увидеть колонки</td>
<td><code>df.columns</code></td>
<td>нет ли лишних пробелов</td>
</tr>
<tr>
<td>проверить типы</td>
<td><code>df.info()</code></td>
<td>числа не стали строками</td>
</tr>
<tr>
<td>найти пропуски</td>
<td><code>df.isna().sum()</code></td>
<td>где нужны решения</td>
</tr>
<tr>
<td>отфильтровать</td>
<td><code>df[df["col"] &gt; 0]</code></td>
<td>условие верное</td>
</tr>
<tr>
<td>сгруппировать</td>
<td><code>groupby()</code></td>
<td>группировка по нужной колонке</td>
</tr>
<tr>
<td>сохранить</td>
<td><code>to_csv()</code></td>
<td>файл появился там, где ожидали</td>
</tr>
</tbody>
</table>
</figure>
<pre class="wp-block-code"><code class="language-python">import pandas as pd

df = pd.DataFrame(
    {
        "manager": ["Анна", "Анна", "Илья", "Илья"],
        "status": ["paid", "new", "paid", "paid"],
        "amount": [1200, 0, 900, 1400],
    }
)

paid = df[df["status"] == "paid"]
report = paid.groupby("manager", as_index=False)["amount"].sum()

print(report)</code></pre>
<h2 class="wp-block-heading" id="как-читать-ошибку-в-pandas">Как читать ошибку в Pandas</h2>
<p>Многие ошибки выглядят страшно, но часто причина простая: нет колонки, тип не тот или фильтр написан для строки вместо числа</p>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Ошибка</th>
<th>Частая причина</th>
<th>Что проверить</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>KeyError</code></td>
<td>нет такой колонки</td>
<td><code>print(df.columns)</code></td>
</tr>
<tr>
<td>пустой результат</td>
<td>фильтр слишком строгий</td>
<td>вывести уникальные значения</td>
</tr>
<tr>
<td>числа склеиваются</td>
<td>колонка строковая</td>
<td><code>df.dtypes</code></td>
</tr>
<tr>
<td>файл не найден</td>
<td>путь другой</td>
<td><code>Path.cwd()</code></td>
</tr>
<tr>
<td>странная кодировка</td>
<td>неверный encoding</td>
<td>попробовать <code>utf-8-sig</code></td>
</tr>
</tbody>
</table>
</figure>
<pre class="wp-block-code"><code class="language-python">print(df.columns)
print(df.dtypes)
print(df["status"].unique())</code></pre>
<h2 class="wp-block-heading" id="цепочка-без-промежуточных-переменных">Цепочка без промежуточных переменных</h2>
<p>Когда шаги уже понятны, можно собрать цепочку. Но сначала лучше написать ее обычными переменными, чтобы легче отлаживать</p>
<pre class="wp-block-code"><code class="language-python">report = (
    df.query("status == 'paid'")
    .groupby("manager", as_index=False)
    .agg(total=("amount", "sum"), orders=("amount", "count"))
    .sort_values("total", ascending=False)
)

print(report)</code></pre>
<p>Если цепочка сломалась, временно разберите ее назад на отдельные переменные. Это не шаг назад, а нормальный способ найти место ошибки</p>
<h2 class="wp-block-heading" id="частые-проблемы">Частые проблемы</h2>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Проблема</th>
<th>Что сделать</th>
</tr>
</thead>
<tbody>
<tr>
<td>колонка не найдена</td>
<td>вывести <code>df.columns</code></td>
</tr>
<tr>
<td>число хранится строкой</td>
<td>проверить <code>df.dtypes</code> и применить <code>astype</code></td>
</tr>
<tr>
<td>фильтр вернул пусто</td>
<td>вывести <code>df.shape</code> до и после</td>
</tr>
<tr>
<td>группировка не та</td>
<td>проверить колонку группировки</td>
</tr>
<tr>
<td>файл сохранился с лишним индексом</td>
<td>использовать <code>index=False</code></td>
</tr>
</tbody>
</table>
</figure>
<div>
</div>
<p>The post <a href="https://faq-develop.ru/jazyki-programmirovanija/python/pandas-osnovnye-komandy-spargalka/">Pandas основные команды: шпаргалка</a> appeared first on <a href="https://faq-develop.ru">FAQ Develop</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://faq-develop.ru/jazyki-programmirovanija/python/pandas-osnovnye-komandy-spargalka/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Шпаргалка по Pandas</title>
		<link>https://faq-develop.ru/jazyki-programmirovanija/python/spargalka-po-pandas/</link>
					<comments>https://faq-develop.ru/jazyki-programmirovanija/python/spargalka-po-pandas/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 03 Jul 2026 10:26:28 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://faq-develop.ru/%d0%b1%d0%b5%d0%b7-%d1%80%d1%83%d0%b1%d1%80%d0%b8%d0%ba%d0%b8/spargalka-po-pandas/</guid>

					<description><![CDATA[<p>Pandas нужен для работы с таблицами: открыть данные, посмотреть структуру, выбрать строки, сгруппировать, очистить пропуски и сохранить отчет. Эта шпаргалка дает рабочий маршрут от маленькой таблицы к результату Мини-таблица для тренировки Быстрая диагностика Команда Что показывает df.head() первые строки df.shape число строк и колонок df.columns названия колонок df.dtypes типы данных df.isna().sum() пропуски по колонкам Выбор […]</p>
<p>The post <a href="https://faq-develop.ru/jazyki-programmirovanija/python/spargalka-po-pandas/">Шпаргалка по Pandas</a> appeared first on <a href="https://faq-develop.ru">FAQ Develop</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Pandas нужен для работы с таблицами: открыть данные, посмотреть структуру, выбрать строки, сгруппировать, очистить пропуски и сохранить отчет. Эта шпаргалка дает рабочий маршрут от маленькой таблицы к результату</p>
<h2 class="wp-block-heading" id="мини-таблица-для-тренировки">Мини-таблица для тренировки</h2>
<pre class="wp-block-code"><code class="language-python">import pandas as pd

df = pd.DataFrame({
    "channel": ["site", "ads", "site", "email"],
    "orders": [10, 5, 7, 3],
    "revenue": [12000, 6000, 9000, 2500],
})

print(df)</code></pre>
<h2 class="wp-block-heading" id="быстрая-диагностика">Быстрая диагностика</h2>
<pre class="wp-block-code"><code class="language-python">print(df.head())
print(df.shape)
print(df.columns)
print(df.dtypes)
print(df.isna().sum())</code></pre>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Команда</th>
<th>Что показывает</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>df.head()</code></td>
<td>первые строки</td>
</tr>
<tr>
<td><code>df.shape</code></td>
<td>число строк и колонок</td>
</tr>
<tr>
<td><code>df.columns</code></td>
<td>названия колонок</td>
</tr>
<tr>
<td><code>df.dtypes</code></td>
<td>типы данных</td>
</tr>
<tr>
<td><code>df.isna().sum()</code></td>
<td>пропуски по колонкам</td>
</tr>
</tbody>
</table>
</figure>
<h2 class="wp-block-heading" id="выбор-колонок">Выбор колонок</h2>
<pre class="wp-block-code"><code class="language-python">print(df["orders"])
print(df[["channel", "orders"]])</code></pre>
<p>Одна колонка возвращает <code>Series</code>, несколько колонок возвращают <code>DataFrame</code></p>
<h2 class="wp-block-heading" id="фильтрация-строк">Фильтрация строк</h2>
<pre class="wp-block-code"><code class="language-python">active = df[df["orders"] &gt;= 5]
site = df[df["channel"] == "site"]

print(active)
print(site)</code></pre>
<p>Для нескольких условий используйте скобки</p>
<pre class="wp-block-code"><code class="language-python">result = df[(df["orders"] &gt;= 5) &amp; (df["channel"] == "site")]
print(result)</code></pre>
<h2 class="wp-block-heading" id="сортировка">Сортировка</h2>
<pre class="wp-block-code"><code class="language-python">top = df.sort_values("revenue", ascending=False)
print(top)</code></pre>
<h2 class="wp-block-heading" id="группировка">Группировка</h2>
<pre class="wp-block-code"><code class="language-python">report = (
    df.groupby("channel", as_index=False)
    .agg({"orders": "sum", "revenue": "sum"})
    .sort_values("revenue", ascending=False)
)

print(report)</code></pre>
<p>Такой отчет отвечает на понятный вопрос: какой канал принес больше заказов и выручки</p>
<div>
</div>
<h2 class="wp-block-heading" id="пропуски-и-типы">Пропуски и типы</h2>
<pre class="wp-block-code"><code class="language-python">df["orders"] = df["orders"].fillna(0)
df["orders"] = df["orders"].astype(int)</code></pre>
<p>Если числовая колонка пришла строкой, суммы могут вести себя странно. Сначала смотрите <code>df.dtypes</code>, потом преобразуйте тип</p>
<h2 class="wp-block-heading" id="чтение-и-сохранение-файлов">Чтение и сохранение файлов</h2>
<pre class="wp-block-code"><code class="language-python">import pandas as pd

df = pd.read_csv("orders.csv")
report = df.groupby("channel", as_index=False)["orders"].sum()
report.to_csv("report.csv", index=False, encoding="utf-8")</code></pre>
<h2 class="wp-block-heading" id="рабочий-пример-маленький-отчет-по-продажам">Рабочий пример: маленький отчет по продажам</h2>
<p>Pandas лучше запоминается не по отдельным командам, а по цепочке: загрузили данные, посмотрели форму, отфильтровали строки, сгруппировали и сохранили отчет</p>
<pre class="wp-block-code"><code class="language-python">import pandas as pd

df = pd.DataFrame(
    [
        {"city": "Казань", "product": "курс", "amount": 1200},
        {"city": "Москва", "product": "курс", "amount": 1800},
        {"city": "Казань", "product": "консультация", "amount": 2500},
        {"city": "Самара", "product": "курс", "amount": None},
    ]
)

print(df.head())
print(df.info())

df["amount"] = df["amount"].fillna(0)

report = (
    df[df["amount"] &gt; 0]
    .groupby("city", as_index=False)["amount"]
    .sum()
    .sort_values("amount", ascending=False)
)

print(report)</code></pre>
<p>В этом примере есть главное: пропуск в данных, фильтрация, группировка и сортировка. Именно такую связку чаще всего ждут от новичка, который говорит, что умеет пользоваться Pandas</p>
<blockquote class="wp-block-quote">
<p>По этой теме полезно отдельно посмотреть <a href="/jazyki-programmirovanija/python/sostavte-ezhenedelnoe-raspisanie-zanyatij/">Составьте еженедельное расписание занятий</a>, чтобы расширить контекст и сравнить подходы</p>
</blockquote>
<blockquote class="wp-block-quote">
<p>По этой теме полезно отдельно посмотреть <a href="/jazyki-programmirovanija/python/annotatsii-tipov-dlya-dekoratorov-v-python/">Аннотации типов для декораторов в Python</a>, чтобы расширить контекст и сравнить подходы</p>
</blockquote>
<h2 class="wp-block-heading" id="что-смотреть-после-загрузки-файла">Что смотреть после загрузки файла</h2>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Команда</th>
<th>Что показывает</th>
<th>Когда помогает</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>df.shape</code></td>
<td>строки и колонки</td>
<td>понять размер таблицы</td>
</tr>
<tr>
<td><code>df.head()</code></td>
<td>первые строки</td>
<td>быстро увидеть структуру</td>
</tr>
<tr>
<td><code>df.info()</code></td>
<td>типы и пропуски</td>
<td>найти проблемные колонки</td>
</tr>
<tr>
<td><code>df.describe()</code></td>
<td>числовую сводку</td>
<td>заметить выбросы</td>
</tr>
<tr>
<td><code>df.isna().sum()</code></td>
<td>пропуски по колонкам</td>
<td>решить, что чистить</td>
</tr>
<tr>
<td><code>df.columns</code></td>
<td>названия колонок</td>
<td>проверить опечатки</td>
</tr>
</tbody>
</table>
</figure>
<h2 class="wp-block-heading" id="когда-использовать-loc-iloc-и-query">Когда использовать loc, iloc и query</h2>
<p><code>loc</code> выбирает по именам строк и колонок, <code>iloc</code> — по позициям, <code>query</code> удобен для читаемых условий</p>
<pre class="wp-block-code"><code class="language-python">high = df.loc[df["amount"] &gt;= 1500, ["city", "amount"]]
first_two = df.iloc[:2, :]
kazans = df.query("city == 'Казань'")

print(high)
print(first_two)
print(kazans)</code></pre>
<p>Если вы только учитесь, чаще начинайте с <code>loc</code>: он явно показывает, какие колонки вы берете и какое условие применяете</p>
<h2 class="wp-block-heading" id="как-проверить-себя">Как проверить себя</h2>
<p>Сделайте три изменения: добавьте еще одну строку, поменяйте порог суммы и сгруппируйте отчет не по городу, а по продукту. Если результат предсказуем, базовая логика Pandas уже начала складываться</p>
<h2 class="wp-block-heading" id="частые-ошибки">Частые ошибки</h2>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Ошибка</th>
<th>Как проверить</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>KeyError</code> по колонке</td>
<td>вывести <code>df.columns</code></td>
</tr>
<tr>
<td>пустой результат после фильтра</td>
<td>проверить условие и <code>df.shape</code></td>
</tr>
<tr>
<td>сумма выглядит странно</td>
<td>посмотреть <code>df.dtypes</code></td>
</tr>
<tr>
<td>пропали строки</td>
<td>сравнить размер до и после фильтра</td>
</tr>
<tr>
<td>экспорт сохранил индекс</td>
<td>добавить <code>index=False</code></td>
</tr>
</tbody>
</table>
</figure>
<h2 class="wp-block-heading" id="мини-задача">Мини-задача</h2>
<p>Найдите канал с максимальной выручкой</p>
<pre class="wp-block-code"><code class="language-python">report = (
    df.groupby("channel", as_index=False)["revenue"]
    .sum()
    .sort_values("revenue", ascending=False)
)

best = report.iloc[0]
print(best["channel"], best["revenue"])</code></pre>
<div>
</div>
<p>The post <a href="https://faq-develop.ru/jazyki-programmirovanija/python/spargalka-po-pandas/">Шпаргалка по Pandas</a> appeared first on <a href="https://faq-develop.ru">FAQ Develop</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://faq-develop.ru/jazyki-programmirovanija/python/spargalka-po-pandas/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Шпаргалка по Python для практики: синтаксис, строки, списки и файлы</title>
		<link>https://faq-develop.ru/jazyki-programmirovanija/python/shpargalka-po-python-dlya-praktiki-sintaksis-stroki-spiski-i-fajly/</link>
					<comments>https://faq-develop.ru/jazyki-programmirovanija/python/shpargalka-po-python-dlya-praktiki-sintaksis-stroki-spiski-i-fajly/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 03 Jul 2026 10:26:21 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://faq-develop.ru/%d0%b1%d0%b5%d0%b7-%d1%80%d1%83%d0%b1%d1%80%d0%b8%d0%ba%d0%b8/shpargalka-po-python-dlya-praktiki-sintaksis-stroki-spiski-i-fajly/</guid>

					<description><![CDATA[<p>Эта шпаргалка собрана как рабочий лист для первых практических задач. Здесь не нужно запоминать все сразу: берите один блок, запускайте код, меняйте данные и смотрите, что изменилось Главная цель материала — быстро собрать маленький полезный скрипт: очистить строки, пройти список, собрать результат и сохранить его в файл По этой теме полезно отдельно посмотреть Составьте еженедельное […]</p>
<p>The post <a href="https://faq-develop.ru/jazyki-programmirovanija/python/shpargalka-po-python-dlya-praktiki-sintaksis-stroki-spiski-i-fajly/">Шпаргалка по Python для практики: синтаксис, строки, списки и файлы</a> appeared first on <a href="https://faq-develop.ru">FAQ Develop</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Эта шпаргалка собрана как рабочий лист для первых практических задач. Здесь не нужно запоминать все сразу: берите один блок, запускайте код, меняйте данные и смотрите, что изменилось</p>
<p>Главная цель материала — быстро собрать маленький полезный скрипт: очистить строки, пройти список, собрать результат и сохранить его в файл</p>
<blockquote class="wp-block-quote">
<p>По этой теме полезно отдельно посмотреть <a href="/jazyki-programmirovanija/python/sostavte-ezhenedelnoe-raspisanie-zanyatij/">Составьте еженедельное расписание занятий</a>, чтобы расширить контекст и сравнить подходы</p>
</blockquote>
<blockquote class="wp-block-quote">
<p>По этой теме полезно отдельно посмотреть <a href="/jazyki-programmirovanija/python/annotatsii-tipov-dlya-dekoratorov-v-python/">Аннотации типов для декораторов в Python</a>, чтобы расширить контекст и сравнить подходы</p>
</blockquote>
<h2 class="wp-block-heading" id="переменные-и-вывод">Переменные и вывод</h2>
<pre class="wp-block-code"><code class="language-python">name = "Анна"
skill = "Python"

print(name)
print(f"{name} изучает {skill}")</code></pre>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Что нужно</th>
<th>Пример</th>
</tr>
</thead>
<tbody>
<tr>
<td>сохранить текст</td>
<td><code>name = "Анна"</code></td>
</tr>
<tr>
<td>сохранить число</td>
<td><code>age = 28</code></td>
</tr>
<tr>
<td>вывести значение</td>
<td><code>print(name)</code></td>
</tr>
<tr>
<td>собрать строку</td>
<td><code>f"{name}: {age}"</code></td>
</tr>
</tbody>
</table>
</figure>
<h2 class="wp-block-heading" id="строки-очистка-и-разбор">Строки: очистка и разбор</h2>
<pre class="wp-block-code"><code class="language-python">text = "  Python, SQL, HTML  "

clean = text.strip()
items = [item.strip().lower() for item in clean.split(",")]

print(items)</code></pre>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Метод</th>
<th>Для чего нужен</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>strip()</code></td>
<td>убрать пробелы по краям</td>
</tr>
<tr>
<td><code>lower()</code></td>
<td>привести к нижнему регистру</td>
</tr>
<tr>
<td><code>replace()</code></td>
<td>заменить часть строки</td>
</tr>
<tr>
<td><code>split()</code></td>
<td>разбить строку</td>
</tr>
<tr>
<td><code>join()</code></td>
<td>собрать строки</td>
</tr>
</tbody>
</table>
</figure>
<h2 class="wp-block-heading" id="условия">Условия</h2>
<pre class="wp-block-code"><code class="language-python">value = ""

if value:
    print("есть значение")
else:
    print("пусто")</code></pre>
<p>Пустая строка, пустой список, <code>0</code> и <code>None</code> считаются ложными значениями. Это удобно для проверок, но важно понимать, что именно вы проверяете</p>
<h2 class="wp-block-heading" id="списки">Списки</h2>
<pre class="wp-block-code"><code class="language-python">skills = ["python", "sql"]

skills.append("html")
skills.remove("sql")

print(skills)
print(len(skills))</code></pre>
<p>Список хорош для набора значений в порядке. Если нужно убрать пустые строки и повторы, удобно собрать новый список</p>
<pre class="wp-block-code"><code class="language-python">raw = [" Python ", "", "SQL", " python "]
clean = []

for item in raw:
    item = item.strip().lower()
    if item and item not in clean:
        clean.append(item)

print(clean)</code></pre>
<h2 class="wp-block-heading" id="словари">Словари</h2>
<p>Словарь нужен, когда у значения есть имя поля</p>
<pre class="wp-block-code"><code class="language-python">profile = {
    "name": "Анна",
    "skills": ["python", "sql"],
}

print(profile["name"])
print(profile.get("city", "город не указан"))</code></pre>
<p>Если ключ обязателен, используйте квадратные скобки. Если поле может отсутствовать, используйте <code>get</code></p>
<h2 class="wp-block-heading" id="функции">Функции</h2>
<p>Функция помогает вынести повторяемое действие</p>
<pre class="wp-block-code"><code class="language-python">def normalize(text):
    return text.strip().lower()

print(normalize(" Python "))</code></pre>
<p>Функция для очистки списка строк</p>
<pre class="wp-block-code"><code class="language-python">def clean_items(raw_items):
    result = []

    for item in raw_items:
        item = item.strip().lower()
        if item and item not in result:
            result.append(item)

    return result

print(clean_items([" Python ", "", "SQL", "python"]))</code></pre>
<div>
</div>
<h2 class="wp-block-heading" id="файлы">Файлы</h2>
<pre class="wp-block-code"><code class="language-python">from pathlib import Path

path = Path("skills.txt")
path.write_text("python\nsql", encoding="utf-8")

print(path.read_text(encoding="utf-8"))</code></pre>
<p>Прочитать файл строками</p>
<pre class="wp-block-code"><code class="language-python">from pathlib import Path

path = Path("skills.txt")

if path.exists():
    lines = path.read_text(encoding="utf-8").splitlines()
else:
    lines = []

print(lines)</code></pre>
<h2 class="wp-block-heading" id="мини-практика-очистить-список-навыков-и-сохранить-файл">Мини-практика: очистить список навыков и сохранить файл</h2>
<pre class="wp-block-code"><code class="language-python">from pathlib import Path

def clean_items(raw_items):
    result = []

    for item in raw_items:
        item = item.strip().lower()
        if item and item not in result:
            result.append(item)

    return result

raw = [" Python ", "", "SQL", " python ", "HTML"]
skills = clean_items(raw)

Path("skills.txt").write_text("\n".join(skills), encoding="utf-8")
print("\n".join(skills))</code></pre>
<p>Что здесь закрепляется:</p>
<ul class="wp-block-list">
<li>строки очищаются через <code>strip()</code> и <code>lower()</code></li>
<li>список хранит набор навыков</li>
<li>цикл перебирает исходные данные</li>
<li>условие отбрасывает пустые значения и повторы</li>
<li>функция делает код читаемее</li>
<li>файл сохраняет результат для дальнейшей работы</li>
</ul>
<h2 class="wp-block-heading" id="рабочий-сценарий-из-грязного-текста-в-файл">Рабочий сценарий: из грязного текста в файл</h2>
<p>Хорошая практика для новичка — взять строку, очистить ее, превратить в список, убрать повторы и сохранить результат. В этой задаче встречаются почти все базовые конструкции Python</p>
<pre class="wp-block-code"><code class="language-python">from pathlib import Path

raw = " Python, SQL, python, HTML, , css "

skills = []

for item in raw.split(","):
    skill = item.strip().lower()
    if skill and skill not in skills:
        skills.append(skill)

Path("skills.txt").write_text("\n".join(skills), encoding="utf-8")

print(skills)</code></pre>
<p>Что здесь происходит по шагам:</p>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Шаг</th>
<th>Код</th>
<th>Зачем</th>
</tr>
</thead>
<tbody>
<tr>
<td>разбить строку</td>
<td><code>raw.split(",")</code></td>
<td>получить отдельные значения</td>
</tr>
<tr>
<td>убрать пробелы</td>
<td><code>item.strip()</code></td>
<td>очистить ввод</td>
</tr>
<tr>
<td>привести регистр</td>
<td><code>lower()</code></td>
<td>сравнивать без дублей</td>
</tr>
<tr>
<td>пропустить пустое</td>
<td><code>if skill</code></td>
<td>не хранить мусор</td>
</tr>
<tr>
<td>проверить повтор</td>
<td><code>skill not in skills</code></td>
<td>оставить уникальные значения</td>
</tr>
<tr>
<td>сохранить файл</td>
<td><code>write_text()</code></td>
<td>получить результат вне консоли</td>
</tr>
</tbody>
</table>
</figure>
<h2 class="wp-block-heading" id="как-усложнять-пример-без-хаоса">Как усложнять пример без хаоса</h2>
<p>Не перепрыгивайте сразу к большому проекту. Лучше добавить одну новую возможность и проверить результат</p>
<pre class="wp-block-code"><code class="language-python">from pathlib import Path

raw = "Python:5, SQL:3, HTML:4"
ratings = {}

for pair in raw.split(","):
    name, score = pair.strip().split(":")
    ratings[name.lower()] = int(score)

strong = {
    name: score
    for name, score in ratings.items()
    if score &gt;= 4
}

Path("strong_skills.txt").write_text(str(strong), encoding="utf-8")

print(strong)</code></pre>
<p>В этом варианте появляются словарь, преобразование строки в число и фильтрация. Если код сломался, проверяйте не весь скрипт, а конкретную строку: что лежит в <code>pair</code>, что вернул <code>split</code>, получилось ли число из <code>score</code></p>
<h2 class="wp-block-heading" id="мини-чек-для-самостоятельной-тренировки">Мини-чек для самостоятельной тренировки</h2>
<p>Попробуйте заменить исходную строку на список покупок, список ссылок или список задач. Оставьте тот же порядок действий: очистить, проверить, преобразовать, сохранить. Так шпаргалка становится не памяткой для чтения, а основой для маленьких рабочих скриптов</p>
<h2 class="wp-block-heading" id="частые-ошибки">Частые ошибки</h2>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Ошибка</th>
<th>Что проверить</th>
</tr>
</thead>
<tbody>
<tr>
<td>пустые строки попали в результат</td>
<td>есть ли <code>if item</code></td>
</tr>
<tr>
<td>повторы не удалились</td>
<td>проверяется ли <code>item not in result</code></td>
</tr>
<tr>
<td>файл не появился</td>
<td>в какой папке запущен скрипт</td>
</tr>
<tr>
<td>число не складывается</td>
<td>не осталось ли оно строкой</td>
</tr>
<tr>
<td>ключ словаря не найден</td>
<td>есть ли такой ключ в данных</td>
</tr>
</tbody>
</table>
</figure>
<div>
</div>
<p>The post <a href="https://faq-develop.ru/jazyki-programmirovanija/python/shpargalka-po-python-dlya-praktiki-sintaksis-stroki-spiski-i-fajly/">Шпаргалка по Python для практики: синтаксис, строки, списки и файлы</a> appeared first on <a href="https://faq-develop.ru">FAQ Develop</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://faq-develop.ru/jazyki-programmirovanija/python/shpargalka-po-python-dlya-praktiki-sintaksis-stroki-spiski-i-fajly/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Регулярные выражения Python: шпаргалка</title>
		<link>https://faq-develop.ru/jazyki-programmirovanija/python/regularnye-vyrajenia-python-spargalka/</link>
					<comments>https://faq-develop.ru/jazyki-programmirovanija/python/regularnye-vyrajenia-python-spargalka/#respond</comments>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 03 Jul 2026 10:26:14 +0000</pubDate>
				<category><![CDATA[Python]]></category>
		<guid isPermaLink="false">https://faq-develop.ru/%d0%b1%d0%b5%d0%b7-%d1%80%d1%83%d0%b1%d1%80%d0%b8%d0%ba%d0%b8/regularnye-vyrajenia-python-spargalka/</guid>

					<description><![CDATA[<p>Регулярные выражения в Python нужны, когда обычных in, split, replace и startswith уже не хватает. Через модуль re можно найти телефон, вытащить номер заказа, заменить лишние пробелы, проверить формат строки и получить отдельные части текста Главное правило: начинайте с простой строки и проверяйте шаблон на нескольких примерах. Один удачный пример еще не доказывает, что выражение […]</p>
<p>The post <a href="https://faq-develop.ru/jazyki-programmirovanija/python/regularnye-vyrajenia-python-spargalka/">Регулярные выражения Python: шпаргалка</a> appeared first on <a href="https://faq-develop.ru">FAQ Develop</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Регулярные выражения в Python нужны, когда обычных <code>in</code>, <code>split</code>, <code>replace</code> и <code>startswith</code> уже не хватает. Через модуль <code>re</code> можно найти телефон, вытащить номер заказа, заменить лишние пробелы, проверить формат строки и получить отдельные части текста</p>
<p>Главное правило: начинайте с простой строки и проверяйте шаблон на нескольких примерах. Один удачный пример еще не доказывает, что выражение работает</p>
<h2 class="wp-block-heading" id="основные-функции-re">Основные функции re</h2>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Функция</th>
<th>Что возвращает</th>
<th>Когда использовать</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>re.search()</code></td>
<td>первое совпадение или <code>None</code></td>
<td>проверить, есть ли фрагмент</td>
</tr>
<tr>
<td><code>re.findall()</code></td>
<td>список всех совпадений</td>
<td>достать все числа, email, слова</td>
</tr>
<tr>
<td><code>re.sub()</code></td>
<td>новую строку после замены</td>
<td>очистить или заменить текст</td>
</tr>
<tr>
<td><code>re.split()</code></td>
<td>список частей</td>
<td>разделить строку по шаблону</td>
</tr>
<tr>
<td><code>re.match()</code></td>
<td>совпадение только с начала строки</td>
<td>когда важно начало</td>
</tr>
<tr>
<td><code>re.fullmatch()</code></td>
<td>совпадение всей строки</td>
<td>строгая проверка формата</td>
</tr>
</tbody>
</table>
</figure>
<h2 class="wp-block-heading" id="частые-символы-в-шаблонах">Частые символы в шаблонах</h2>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Шаблон</th>
<th>Значение</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>\d</code></td>
<td>цифра</td>
</tr>
<tr>
<td><code>\D</code></td>
<td>не цифра</td>
</tr>
<tr>
<td><code>\w</code></td>
<td>буква, цифра или нижнее подчеркивание</td>
</tr>
<tr>
<td><code>\s</code></td>
<td>пробельный символ</td>
</tr>
<tr>
<td><code>.</code></td>
<td>любой символ, кроме перевода строки</td>
</tr>
<tr>
<td><code>+</code></td>
<td>один или больше повторов</td>
</tr>
<tr>
<td><code>*</code></td>
<td>ноль или больше повторов</td>
</tr>
<tr>
<td><code>?</code></td>
<td>ноль или один повтор</td>
</tr>
<tr>
<td><code>{3}</code></td>
<td>ровно три повтора</td>
</tr>
<tr>
<td><code>^</code></td>
<td>начало строки</td>
</tr>
<tr>
<td><code>$</code></td>
<td>конец строки</td>
</tr>
<tr>
<td><code>[]</code></td>
<td>набор допустимых символов</td>
</tr>
<tr>
<td><code>()</code></td>
<td>группа</td>
</tr>
</tbody>
</table>
</figure>
<h2 class="wp-block-heading" id="найти-все-числа">Найти все числа</h2>
<pre class="wp-block-code"><code class="language-python">import re

text = "Заказы 125, 340 и 77"
numbers = re.findall(r"\d+", text)

print(numbers)</code></pre>
<p>Результат будет списком строк. Если нужны числа для расчетов, преобразуйте их через <code>int</code></p>
<pre class="wp-block-code"><code class="language-python">numbers = [int(number) for number in re.findall(r"\d+", text)]
print(sum(numbers))</code></pre>
<h2 class="wp-block-heading" id="проверить-email-учебным-шаблоном">Проверить email учебным шаблоном</h2>
<pre class="wp-block-code"><code class="language-python">import re

email = "anna@example.com"
pattern = r"^[^@\s]+@[^@\s]+\.[^@\s]+$"

print(bool(re.fullmatch(pattern, email)))</code></pre>
<p>Это учебная проверка, а не универсальная проверка всех возможных адресов. Для форм и регистрации лучше дополнять ее проверкой сервиса или готовыми инструментами</p>
<h2 class="wp-block-heading" id="группы-достать-часть-строки">Группы: достать часть строки</h2>
<pre class="wp-block-code"><code class="language-python">import re

text = "order-125"
match = re.search(r"order-(\d+)", text)

if match:
    print(match.group(1))</code></pre>
<p><code>group(0)</code> возвращает все найденное совпадение, <code>group(1)</code> — первую часть в скобках</p>
<h2 class="wp-block-heading" id="замена-лишних-пробелов">Замена лишних пробелов</h2>
<pre class="wp-block-code"><code class="language-python">import re

text = "много     пробелов   внутри"
clean = re.sub(r"\s+", " ", text).strip()

print(clean)</code></pre>
<div>
</div>
<h2 class="wp-block-heading" id="телефон-на-нескольких-строках">Телефон на нескольких строках</h2>
<pre class="wp-block-code"><code class="language-python">import re

samples = [
    "Телефон: +7 900 111-22-33",
    "Телефон не указан",
    "+7 999 000-00-00, доб. 12",
]

pattern = r"\+7\s\d{3}\s\d{3}-\d{2}-\d{2}"

for text in samples:
    match = re.search(pattern, text)
    print(match.group() if match else "не найдено")</code></pre>
<p>Так проще увидеть, где шаблон работает, а где нет</p>
<h2 class="wp-block-heading" id="как-выбирать-функцию-re">Как выбирать функцию re</h2>
<p>В регулярных выражениях важно сначала выбрать не символы шаблона, а способ поиска. Если нужно проверить всю строку, берите <code>fullmatch</code>. Если достаточно найти фрагмент внутри текста, подойдет <code>search</code>. Если нужны все совпадения, используйте <code>findall</code> или <code>finditer</code></p>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Задача</th>
<th>Что использовать</th>
<th>Почему</th>
</tr>
</thead>
<tbody>
<tr>
<td>строка целиком должна быть числом</td>
<td><code>re.fullmatch()</code></td>
<td>не пропустит лишний текст по краям</td>
</tr>
<tr>
<td>найти первое число в тексте</td>
<td><code>re.search()</code></td>
<td>вернет первое совпадение</td>
</tr>
<tr>
<td>собрать все цены из строки</td>
<td><code>re.findall()</code></td>
<td>сразу даст список значений</td>
</tr>
<tr>
<td>пройтись по совпадениям с позициями</td>
<td><code>re.finditer()</code></td>
<td>у каждого результата есть <code>start()</code> и <code>end()</code></td>
</tr>
<tr>
<td>заменить фрагменты</td>
<td><code>re.sub()</code></td>
<td>удобно чистить текст</td>
</tr>
</tbody>
</table>
</figure>
<pre class="wp-block-code"><code class="language-python">import re

text = "Заказ 102: 3 товара, сумма 1490 руб"

print(re.search(r"\d+", text).group())
print(re.findall(r"\d+", text))
print(bool(re.fullmatch(r"\d+", text)))</code></pre>
<p><code>fullmatch</code> вернет <code>False</code>, потому что строка содержит не только число. Это частая причина путаницы: <code>search</code> ищет внутри строки, а <code>fullmatch</code> проверяет строку целиком</p>
<h2 class="wp-block-heading" id="мини-проект-разобрать-строки-лога">Мини-проект: разобрать строки лога</h2>
<p>Такой пример ближе к реальной задаче: есть строки с датой, уровнем события и сообщением. Нужно достать части в словари</p>
<pre class="wp-block-code"><code class="language-python">import re

lines = [
    "2026-07-03 INFO user created",
    "2026-07-03 ERROR file not found",
]

pattern = re.compile(
    r"(?P&lt;date&gt;\d{4}-\d{2}-\d{2})\s+"
    r"(?P&lt;level&gt;INFO|ERROR|WARNING)\s+"
    r"(?P&lt;message&gt;.+)"
)

events = []

for line in lines:
    match = pattern.fullmatch(line)
    if match:
        events.append(match.groupdict())

print(events)</code></pre>
<p>Здесь полезны именованные группы: результат сразу читается как данные, а не как набор индексов. Если формат строки немного изменится, ошибку легче заметить</p>
<blockquote class="wp-block-quote">
<p>По этой теме полезно отдельно посмотреть <a href="/jazyki-programmirovanija/python/sostavte-ezhenedelnoe-raspisanie-zanyatij/">Составьте еженедельное расписание занятий</a>, чтобы расширить контекст и сравнить подходы</p>
</blockquote>
<blockquote class="wp-block-quote">
<p>По этой теме полезно отдельно посмотреть <a href="/jazyki-programmirovanija/python/annotatsii-tipov-dlya-dekoratorov-v-python/">Аннотации типов для декораторов в Python</a>, чтобы расширить контекст и сравнить подходы</p>
</blockquote>
<h2 class="wp-block-heading" id="как-отлаживать-шаблон">Как отлаживать шаблон</h2>
<p>Отлаживайте регулярку маленькими кусками. Сначала проверьте дату, потом уровень, потом сообщение. Не собирайте длинный шаблон сразу</p>
<pre class="wp-block-code"><code class="language-python">import re

line = "2026-07-03 ERROR file not found"

checks = [
    r"\d{4}-\d{2}-\d{2}",
    r"\d{4}-\d{2}-\d{2}\s+(INFO|ERROR|WARNING)",
    r"\d{4}-\d{2}-\d{2}\s+(INFO|ERROR|WARNING)\s+.+",
]

for pattern in checks:
    print(pattern, bool(re.fullmatch(pattern, line)))</code></pre>
<h2 class="wp-block-heading" id="типичные-ошибки">Типичные ошибки</h2>
<figure class="wp-block-table">
<table>
<thead>
<tr>
<th>Ошибка</th>
<th>Как исправить</th>
</tr>
</thead>
<tbody>
<tr>
<td>вызвать <code>group()</code> без проверки</td>
<td>сначала проверить <code>if match</code></td>
</tr>
<tr>
<td>забыть raw-строку</td>
<td>писать <code>r"\d+"</code>, а не <code>"\d+"</code></td>
</tr>
<tr>
<td>сделать шаблон слишком широким</td>
<td>проверять на нескольких строках</td>
</tr>
<tr>
<td>использовать regex там, где хватит строки</td>
<td>сначала попробовать <code>in</code>, <code>split</code>, <code>replace</code></td>
</tr>
<tr>
<td>искать точку как <code>.</code></td>
<td>экранировать <code>\.</code></td>
</tr>
</tbody>
</table>
</figure>
<h2 class="wp-block-heading" id="мини-задача">Мини-задача</h2>
<p>Из строки <code>order=125; email=anna@example.com; total=4500</code> достаньте номер заказа, email и сумму</p>
<pre class="wp-block-code"><code class="language-python">import re

text = "order=125; email=anna@example.com; total=4500"

order = re.search(r"order=(\d+)", text)
email = re.search(r"email=([\w.-]+@[\w.-]+)", text)
total = re.search(r"total=(\d+)", text)

print(order.group(1) if order else "нет заказа")
print(email.group(1) if email else "нет email")
print(int(total.group(1)) if total else 0)</code></pre>
<div>
</div>
<p>The post <a href="https://faq-develop.ru/jazyki-programmirovanija/python/regularnye-vyrajenia-python-spargalka/">Регулярные выражения Python: шпаргалка</a> appeared first on <a href="https://faq-develop.ru">FAQ Develop</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://faq-develop.ru/jazyki-programmirovanija/python/regularnye-vyrajenia-python-spargalka/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
