Я пытаюсь проверить, содержит ли строка только буквы, а не цифры или символы.
Например:
>>> only_letters("hello")
True
>>> only_letters("he7lo")
False
Я пытаюсь проверить, содержит ли строка только буквы, а не цифры или символы.
Например:
>>> only_letters("hello")
True
>>> only_letters("he7lo")
False
Простой:
if string.isalpha():
print("It all letters")
str.isalpha()
действует только в том случае, если все символы в строке являются буквами:
Возвращает true, если все символы в строке являются алфавитными и есть хотя бы один символ, иначе false.
Демо:
>>> 'hello'.isalpha()
True
>>> '42hello'.isalpha()
False
>>> 'hel lo'.isalpha()
False
Работает функция str.isalpha()
. то есть.
if my_string.isalpha():
print('it is letters')
Для людей, которые находят этот вопрос через Google, который может захотеть узнать, содержит ли строка только подмножество всех букв, я рекомендую использовать регулярные выражения:
import re
def only_letters(tested_string):
match = re.match("^[ABCDEFGHJKLM]*$", tested_string)
return match is not None
Функция string.isalpha()
будет работать для вас.
Похоже, люди говорят использовать str.isalpha
.
Это одна строка, чтобы проверить, являются ли все символы буквами.
def only_letters(string):
return all(letter.isalpha() for letter in string)
all
принимает итерабельное значение booleans и возвращает True
, если все логические значения True
.
В общем случае all
возвращает True
, если объекты в вашем iterable будут считаться True
. Они считались бы False
None
len(list) == 0
)False
. (Дух)На самом деле, мы сейчас находимся в глобализированном мире 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
Как видите, категории в белом списке довольно легко контролируются кортежем внутри функции. Смотрите эту статью для более подробного обсуждения.
(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.
Вы можете использовать регулярные выражения.
>>> 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 символ и если все символы в строке являются алфавитами.
func only_letters(str):
return not any(str.isdigit(c) for c in str)
Довольно простое решение, которое я придумал: (Python 3)
def only_letters(tested_string):
for letter in tested_string:
if letter not in "abcdefghijklmnopqrstuvwxyz":
return False
return True
Вы можете добавить пробел в строку, которую вы проверяете, если хотите, чтобы пробелы были разрешены.