Подтвердить что ты не робот

Как проверить, содержит ли строка только буквы в Python?

Я пытаюсь проверить, содержит ли строка только буквы, а не цифры или символы.

Например:

>>> only_letters("hello")
True
>>> only_letters("he7lo")
False
4b9b3361

Ответ 1

Простой:

if string.isalpha():
    print("It all letters")

str.isalpha() действует только в том случае, если все символы в строке являются буквами:

Возвращает true, если все символы в строке являются алфавитными и есть хотя бы один символ, иначе false.

Демо:

>>> 'hello'.isalpha()
True
>>> '42hello'.isalpha()
False
>>> 'hel lo'.isalpha()
False

Ответ 2

Работает функция str.isalpha(). то есть.

if my_string.isalpha():
    print('it is letters')

Ответ 3

Для людей, которые находят этот вопрос через Google, который может захотеть узнать, содержит ли строка только подмножество всех букв, я рекомендую использовать регулярные выражения:

import re

def only_letters(tested_string):
    match = re.match("^[ABCDEFGHJKLM]*$", tested_string)
    return match is not None

Ответ 5

Похоже, люди говорят использовать str.isalpha.

Это одна строка, чтобы проверить, являются ли все символы буквами.

def only_letters(string):
    return all(letter.isalpha() for letter in string)

all принимает итерабельное значение booleans и возвращает True, если все логические значения True.

В общем случае all возвращает True, если объекты в вашем iterable будут считаться True. Они считались бы False

  • 0
  • None
  • Пустые структуры данных (т.е.: len(list) == 0)
  • False. (Дух)

Ответ 6

На самом деле, мы сейчас находимся в глобализированном мире 21-го века, и люди больше не общаются, используя только ASCII, поэтому, когда вы отвечаете на вопрос "это только буквы", вам также необходимо учитывать буквы не алфавитов ASCII. Python имеет довольно классную библиотеку unicodedata, которая, помимо прочего, позволяет классифицировать символы Unicode:

unicodedata.category('陳')
'Lo'

unicodedata.category('A')
'Lu'

unicodedata.category('1')
'Nd'

unicodedata.category('a')
'Ll'

Категории и их сокращения определены в стандарте Unicode. Отсюда вы можете довольно легко придумать такую функцию:

def only_letters(s):
    for c in s:
        cat = unicodedata.category(c)
        if cat not in ('Ll','Lu','Lo'):
            return False
    return True

А потом:

only_letters('Bzdrężyło')
True

only_letters('He7lo')
False

Как видите, категории в белом списке довольно легко контролируются кортежем внутри функции. Смотрите эту статью для более подробного обсуждения.

Ответ 7

(1) При печати строки используйте str.isalpha().

(2) Пожалуйста, ознакомьтесь с нижеприведенной программой для справки: -

 str = "this";  # No space & digit in this string
 print str.isalpha() # it gives return True

 str = "this is 2";
 print str.isalpha() # it gives return False

Примечание: - Я проверил выше пример в Ubuntu.

Ответ 8

Вы можете использовать регулярные выражения.

>>> import re
>>> pattern = re.compile("^[a-zA-Z]+$")
>>> pattern.match("hello")
<_sre.SRE_Match object; span=(0, 5), match='hello'>
>>> pattern.match("hel7lo")
>>>

Метод match() вернет объект Match если совпадение найдено. В противном случае он вернет None.


Более простой подход - использовать метод .isalpha()

>>> "Hello".isalpha()
True
>>> "Hel7lo".isalpha()
False

isalpha() возвращает true, если в строке есть хотя бы 1 символ и если все символы в строке являются алфавитами.

Ответ 9

func only_letters(str):
    return not any(str.isdigit(c) for c in str)

Ответ 10

Довольно простое решение, которое я придумал: (Python 3)

def only_letters(tested_string):
    for letter in tested_string:
        if letter not in "abcdefghijklmnopqrstuvwxyz":
            return False
    return True

Вы можете добавить пробел в строку, которую вы проверяете, если хотите, чтобы пробелы были разрешены.