Гид по технологиям

Булевы методы строк в Python

5 min read Python Обновлено 17 Apr 2026
Булевы методы строк в Python — проверка строк
Булевы методы строк в Python — проверка строк

Мужчина с карточкой Python

Строка в Python — это последовательность символов. Для строк доступны встроенные методы; часть из них возвращает булево значение (True/False) и предназначена для проверки, соответствует ли строка заданным правилам. Эти методы полезны при валидации ввода, обработке текстов и написании тестов.

Ниже описаны основные булевы методы строк в Python 3, примеры использования и рекомендации, когда какой метод выбирать.

Как проверить, состоит ли строка только из буквенно‑цифровых символов

Метод: str.isalnum()

Возвращает True, если все символы в строке являются буквенно‑цифровыми (A–Z, a–z, 0–9) и строка не пуста. Пустая строка вернёт False.

Примеры:

str1 = "WelcomeToMUO"
# True: все символы буквенно-цифровые
checkstr1 = str1.isalnum()
print(checkstr1)

str2 = "Welcome To MUO"
# False: есть пробелы
checkstr2 = str2.isalnum()
print(checkstr2)

str3 = "#WelcomeToMUO"
# False: есть специальный символ
checkstr3 = str3.isalnum()
print(checkstr3)

str4 = "274962472"
# True: только цифры
checkstr4 = str4.isalnum()
print(checkstr4)

str5 = "Welcome2MUO"
# True: буквы и цифры
checkstr5 = str5.isalnum()
print(checkstr5)

Вывод:

True
False
False
True
True

Важно: метод isalnum() вернёт False для строк с подчёркиванием (_), пробелами или знаками пунктуации.

Как проверить, состоит ли строка только из букв

Метод: str.isalpha()

Возвращает True, если все символы в строке являются буквами (включая символы Unicode, относимые к буквам) и строка не пуста.

Примеры:

str1 = "WelcomeToMUO"
# True: все символы — буквы
checkstr1 = str1.isalpha()
print(checkstr1)

str2 = "Welcome To MUO"
# False: есть пробелы
checkstr2 = str2.isalpha()
print(checkstr2)

str3 = "#WelcomeToMUO"
# False: специальный символ
checkstr3 = str3.isalpha()
print(checkstr3)

str4 = "274962472"
# False: цифры, не буквы
checkstr4 = str4.isalpha()
print(checkstr4)

str5 = "Welcome2MUO"
# False: содержит цифру
checkstr5 = str5.isalpha()
print(checkstr5)

Вывод:

True
False
False
False
False

Примечание: isalpha() учитывает буквы других алфавитов (кириллица, иероглифы и т.д.) согласно Unicode.

Разница между isdecimal(), isdigit() и isnumeric()

Методы: str.isdecimal(), str.isdigit(), str.isnumeric()

Коротко:

  • isdecimal(): символы, используемые для представления десятичных цифр (категория Unicode Nd).
  • isdigit(): включает десятичные цифры и некоторые специальные цифры (например, надстрочные цифры).
  • isnumeric(): самый широкий — включает числовые символы (дроби, римские/вульгарные дроби и т.д.).

Отношение множества:

isdecimal() ⊆ isdigit() ⊆ isnumeric()

Примеры:

# Только цифры ASCII
str1 = "8734947"
print("str1:")
print("str1.isdecimal() : ", str1.isdecimal())
print("str1.isdigit() : ", str1.isdigit())
print("str1.isnumeric() : ", str1.isnumeric())

# Вульгарная дробь
str2 = "½"
print("str2:")
print("str2.isdecimal() : ", str2.isdecimal())
print("str2.isdigit() : ", str2.isdigit())
print("str2.isnumeric() : ", str2.isnumeric())

# Надстрочные цифры
str3 = "⁰¹²³⁴⁵⁶⁷⁸⁹"
print("str3:")
print("str3.isdecimal() : ", str3.isdecimal())
print("str3.isdigit() : ", str3.isdigit())
print("str3.isnumeric() : ", str3.isnumeric())

Ожидаемый вывод:

str1:
str1.isdecimal() :  True
str1.isdigit() :  True
str1.isnumeric() :  True
str2:
str2.isdecimal() :  False
str2.isdigit() :  False
str2.isnumeric() :  True

str3:
str3.isdecimal() :  False
str3.isdigit() :  True
str3.isnumeric() :  True

Когда важно: при парсинге чисел из тексов, особенно если ожидается Unicode‑ввод (полезно для локализованных приложений).

Как проверить, является ли строка допустимым идентификатором

Метод: str.isidentifier()

Возвращает True, если строка соответствует правилам идентификатора Python: состоит из буквенно‑цифровых символов и/или подчёркиваний, не начинается с цифры и не содержит пробелов.

Примеры:

str1 = "var1"
# True: допустимый идентификатор
checkstr1 = str1.isidentifier()
print(checkstr1)

str2 = "var 1"
# False: пробел
checkstr2 = str2.isidentifier()
print(checkstr2)

str3 = "var1#"
# False: специальный символ
checkstr3 = str3.isidentifier()
print(checkstr3)

str4 = "_var1_"
# True: подчёркивания разрешены
checkstr4 = str4.isidentifier()
print(checkstr4)

str5 = "1var"
# False: начинается с цифры
checkstr5 = str5.isidentifier()
print(checkstr5)

Вывод:

True
False
False
True
False

Применение: полезно для генерации и проверки имён переменных, ключей в динамически генерируемом коде или API, принимающих идентификаторы.

Как проверить верхний и нижний регистр

Методы: str.isupper(), str.islower()

  • isupper() возвращает True, если в строке есть хотя бы одна буква и все буквы — заглавные.
  • islower() возвращает True, если в строке есть хотя бы одна буква и все буквы — строчные.

Примеры:

str1 = "MAKEUSEOF"
print("str1:")
print("str1.isupper() : ", str1.isupper())
print("str1.islower() : ", str1.islower())

str2 = "makeuseof"
print("str2:")
print("str2.isupper() : ", str2.isupper())
print("str2.islower() : ", str2.islower())

str3 = "MakeUseOf"
print("str3:")
print("str3.isupper() : ", str3.isupper())
print("str3.islower() : ", str3.islower())

Вывод:

str1:
str1.isupper() : True
str1.islower() : False
str2:
str2.isupper() : False
str2.islower() : True
str3:
str3.isupper() : False
str3.islower() : False

Замечание: наличие цифр или символов препинания не мешает проверке; важно наличие хотя бы одной буквы.

Как проверить, состоит ли строка только из пробельных символов

Метод: str.isspace()

Возвращает True, если строка не пуста и все символы в ней — пробельные (пробел, таб, перевод строки и др.).

Примеры:

str1 = " "
# True: только пробел
checkstr1 = str1.isspace()
print(checkstr1)

str2 = " MUO "
# False: есть буквы
checkstr2 = str2.isspace()
print(checkstr2)

str3 = " - "
# False: есть дефис
checkstr3 = str3.isspace()
print(checkstr3)

Вывод:

True
False
False

Применение: проверка пустых полей ввода, автоматическая очистка данных.

Как проверить стиль заголовка

Метод: str.istitle()

Возвращает True, если каждое слово в строке начинается с заглавной буквы, а остальные буквы в слове — строчные. Метод ориентирован на базовый стиль заголовков и учитывает границы слов.

Примеры:

str1 = "Welcome To Muo"
# True: каждое слово с заглавной буквы
checkstr1 = str1.istitle()
print(checkstr1)

str2 = "Welcome to Muo"
# False: слово "to" не с заглавной буквы
checkstr2 = str2.istitle()
print(checkstr2)

str3 = "welcome to muo"
# False: все слова с маленькой буквы
checkstr3 = str3.istitle()
print(checkstr3)

Вывод:

True
False
False

Полезно при валидации заголовков, автоподстановке форматов и нормализации текстов.

Когда эти методы дают неожиданные результаты

Важно понимать ограничения и типичные ловушки:

  • Пустые строки возвращают False в большинстве методов (isalnum, isalpha и т. п.). Учитывайте это отдельно.
  • Unicode: символы из других алфавитов учитываются; это хорошо для интернационализации, но может вести к неожиданностям (например, буквы из скриптов, похожих на латиницу).
  • Подчёркивание: isalnum() считает подчёркивание не буквенно‑цифровым; var не пройдёт isalnum(), но пройдёт isidentifier().
  • Пробелы и невидимые символы: проверьте strip() перед валидацией, если ввод может содержать пробелы по краям.

Альтернативные подходы и дополнения

  • Регулярные выражения (re.fullmatch) дают гибкость: можно проверять форматы, диапазоны символов, длину и сочетания (например, почта, телефон).
  • Библиотеки валидации (pydantic, cerberus) для структурированной валидации данных в приложениях.
  • Нормализация Unicode (unicodedata.normalize) перед проверкой для устранения комбинационных символов.

Быстрое руководство: как выбирать метод

flowchart TD
  A[Есть строка] --> B{Хотите проверить:}
  B --> |только буквы| C[isalpha'']
  B --> |буквы или цифры| D[isalnum'']
  B --> |только цифры ASCII| E[isdecimal'']
  B --> |включая надстрочные| F[isdigit'']
  B --> |любой числовой символ| G[isnumeric'']
  B --> |валидный идентификатор| H[isidentifier'']
  B --> |все заглавные/строчные| I[isupper''/islower'']
  B --> |только пробелы| J[isspace'']
  B --> |заголовочный стиль| K[istitle'']

Чек‑лист для разработчика при валидации строк

  • Удалил ли я лишние пробелы (strip) перед проверкой?
  • Учёл ли я пустую строку как отдельный случай?
  • Нужна ли локальная обработка Unicode (normalize)?
  • Подходит ли встроенный метод или лучше regex/парсер?
  • Написаны ли тесты для граничных случаев (надстрочные, дроби, символы из других алфавитов)?

Критерии приёмки (минимальные тесты)

  • Валидная буквенная строка: isalpha() -> True.
  • Строка с пробелом: isalpha()/isalnum() -> False.
  • Чисто цифровая строка: isdecimal()/isdigit()/isnumeric() -> True для ASCII‑цифр.
  • Вульгарная дробь: isnumeric() -> True, isdecimal()/isdigit() -> False.
  • Идентификатор, начинающийся с цифры: isidentifier() -> False.

Небольшая шпаргалка (cheat sheet)

  • isalnum() — буквы и цифры.
  • isalpha() — только буквы.
  • isdecimal() — десятичные цифры (категория Unicode Nd).
  • isdigit() — цифры + специальные цифровые символы.
  • isnumeric() — любые числовые символы.
  • isidentifier() — валидный идентификатор Python.
  • isupper()/islower() — проверка регистра (требуется хотя бы одна буква).
  • isspace() — только пробельные символы.
  • istitle() — стиль заголовка.

Мини‑методология для внедрения в проект

  1. Определите требования к полю (набор допустимых символов и поведение для пустых строк).
  2. Выберите наиболее простой встроенный метод, покрывающий требования.
  3. Если требуется сложная логика — используйте регулярные выражения или библиотеку валидации.
  4. Добавьте тесты: позитивные, негативные и граничные случаи.
  5. Документируйте ожидания по локали (какие символы считать допустимыми).

Короткий глоссарий

  • Unicode: стандарт кодирования символов, включающий миллионы символов разных алфавитов.
  • Decimal vs Digit vs Numeric: градация по типам числовых символов в Unicode.
  • Идентификатор: допустимое имя переменной/функции в Python.

Заключение

Булевы методы строк в Python — простые и быстрые инструменты для валидации текстовых данных. Они удобны для базовых проверок и хорошо работают с Unicode, но в сложных случаях стоит комбинировать их с нормализацией, регулярными выражениями или специализированными библиотеками. Добавьте тесты и обработку пустых/невидимых символов, чтобы избежать неожиданных результатов.

Важно: всегда думайте о локализации — символы разных языков могут вести себя иначе.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро