Isalpha: примеры (PYTHON)

Проверка строк на буквы с помощью isalpha в Python
Раздел: Строки, Проверка символов
isalpha: bool

Функция isalpha в Python

Метод str.isalpha() проверяет, состоит ли строка только из буквенных символов. Он возвращает True, если в строке есть хотя бы один символ и все символы являются буквами, в противном случае возвращает False.

Использование этого метода актуально для проверки корректности ввода пользователя, валидации текстовых данных, обработки естественного языка и фильтрации строк.

Метод не принимает никаких аргументов. Синтаксис выглядит так: строка.isalpha().

Под «буквами» в контексте этого метода понимаются символы, которые в Unicode определены как «буква». Это включает буквы из всех алфавитов (например, кириллица, греческий, арабский) и некоторые другие символы, такие как буквы тональных систем, но не включает цифры, пробелы, знаки препинания и символы типа эмодзи.

Возвращаемое значение - логическое (bool): True или False.

Простые примеры использования

Пример с латинскими буквами:

print("Hello".isalpha())
True

Пример с кириллицей:

print("Привет".isalpha())
True

Строка содержит пробел:

print("Hello World".isalpha())
False

Строка содержит цифру:

print("Hello123".isalpha())
False

Строка содержит знак препинания:

print("Hello!".isalpha())
False

Пустая строка:

print("".isalpha())
False

Похожие строковые методы в Python

  • str.isdigit() - проверяет, состоит ли строка только из цифр.
  • str.isnumeric() - проверяет, являются ли все символы числовыми (включая римские цифры, дроби).
  • str.isdecimal() - проверяет, являются ли все символы десятичными цифрами.
  • str.isalnum() - проверяет, состоит ли строка только из букв и цифр.
  • str.islower() / str.isupper() - проверяют регистр букв.
  • str.isspace() - проверяет, состоит ли строка только из пробельных символов.

Метод isalpha() используют для строгой проверки на наличие только букв. Метод isalnum() подходит для проверки алфавитно-цифровых идентификаторов. Методы isdigit(), isdecimal(), isnumeric() применяют для проверки числовых строк с разной степенью строгости.

Типичные ошибки при использовании

Вызов метода для объекта нестрокового типа:

number = 123
print(number.isalpha())
AttributeError: 'int' object has no attribute 'isalpha'

Ожидание, что метод вернет True для строк, содержащих пробелы или апострофы:

print("I'm".isalpha())
print("Hello World".isalpha())
False
False

Неучет того, что пустая строка возвращает False:

name = ""
if name.isalpha():
    print("Имя корректно")
else:
    print("Имя некорректно или пустое")
Имя некорректно или пустое

История изменений

Метод str.isalpha() присутствует в Python с ранних версий. В Python 3.0 поведение было обновлено для полной поддержки Unicode. Это значит, что с версии 3.x метод корректно определяет буквы из всех алфавитов, в отличие от Python 2.x, где проверка могла ограничиваться ASCII в некоторых контекстах. Значительных изменений в последних версиях Python 3.x не происходило.

Расширенные примеры применения

Фильтрация списка строк, оставляя только те, что состоят из букв:

Пример python
words = ["Hello", "Python3", "2023", "test", "user123", ""]
filtered = [word for word in words if word.isalpha()]
print(filtered)
['Hello', 'test']

Проверка строк с буквами из разных алфавитов и систем:

Пример python
tests = ["Hello", "Привет", "こんにちは", "مرحبا", "你好"]
for s in tests:
    print(f"{s!r}: {s.isalpha()}")
'Hello': True
'Привет': True
'こんにちは': True
'مرحبا': True
'你好': True

Обработка ввода пользователя с удалением не-буквенных символов:

Пример python
user_input = "Name123!@#"
cleaned = ''.join(char for char in user_input if char.isalpha())
print(cleaned)
Name

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

Пример python
def is_proper_name(s):
    return s.isalpha() and s.istitle() and len(s) > 1

print(is_proper_name("London"))
print(is_proper_name("london"))
print(is_proper_name("New York"))
True
False
False

Важно помнить, что некоторые символы, такие как римские цифры или символы с диакритиками, считаются буквами:

Пример python
print("Ⅳ".isalpha())  # Римская цифра
print("café".isalpha())  # Буква с акцентом
False
True

Строки, содержащие только буквы, но из смешанных алфавитов, также проходят проверку:

Пример python
print("HelloПривет".isalpha())
True

Аналоги функции в других языках

PHP: Функция ctype_alpha() работает только с ASCII-символами. Для Unicode нужны другие подходы.

echo ctype_alpha("Hello"); // 1 (true)
echo ctype_alpha("Hello123"); // (false)
1

JavaScript: Нет встроенной функции. Используют регулярные выражения.

console.log(/^[A-Za-z\u00C0-\u017F]+$/.test("Hello"));
true

Java: Метод Character.isLetter() для каждого символа. Работает с Unicode.

String str = "Hello";
boolean result = str.chars().allMatch(Character::isLetter);
System.out.println(result);
true

C#: Метод Char.IsLetter() в цикле или с LINQ.

string str = "Hello";
bool result = str.All(char.IsLetter);
Console.WriteLine(result);
True

Go: Нет прямой функции. Проверяют через unicode.IsLetter для каждого символа.

import "unicode"
func isAlpha(s string) bool {
    for _, r := range s {
        if !unicode.IsLetter(r) {
            return false
        }
    }
    return len(s) > 0
}
fmt.Println(isAlpha("Hello"))
true

SQL (PostgreSQL): Используют оператор ~ с регулярным выражением.

SELECT 'Hello' ~ '^[[:alpha:]]+$';
t

питон isalpha function comments

En
Isalpha Check if all characters are alphabetic