- Как я могу проверить, содержит ли строка только буквы в Python?
- Python операции со строками
- isalnum Python
- Пример 1. Работа isalnum()
- Пример 2. Работа isalnum()
- isalpha Python
- Пример 1. Работа isalpha
- Пример 2. Работа isalpha
- Python isdecimal
- Пример 1. Работа с isdecimal
- isdigit Python
- Пример. Работа с методом isdigit
- islower Python
- Как использовать метод islower() в программе?
- Python isnumeric
- Пример. Работа с методом isnumeric()
- isupper Python
- Пример 1: Возвращаемое значение isupper()
Как я могу проверить, содержит ли строка только буквы в Python?
Примечание: в python2 это не поддерживает Unicode, поэтому «ä».isalpha() — False. Тем не менее, в python3 «ä».isalpha() имеет значение True, потому что python3 имеет строки unicode по умолчанию.
Да, я просто добавил это как дополнительную полезную информацию для ничего не подозревающих читателей
Работает функция 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
Извините, что пошли на придирки, но регулярное выражение в вашем примере также может быть ^[A-HJ-M]*$ , что, на мой взгляд, более читабельно.
Функция 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
На самом деле, теперь мы находимся в глобализированном мире 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
Как вы можете видеть, категории с белым списком можно легко контролировать с помощью кортежа внутри функции. Подробнее см. в этой статье.
Python операции со строками
В Python операции со строками можно производить различными методами. Практически для каждой операции есть свои методы. В статьте методы строк Python, которая является частью этой статьи, рассмотрены дополнительные методы, советую вам с ними ознакомиться.
isalnum Python
Метод isalnum python возвращает значение True , в случае, если все символы в строке являются буквами и цифрами. В противном случаем метод isalnum() вернет нам значение False .
Пример 1. Работа isalnum()
name = "M234onica" print(name.isalnum()) # С пробелом name = "M3onica Gell22er " print(name.isalnum()) name = "Mo3nicaGell22er" print(name.isalnum()) name = "133" print(name.isalnum()) #РезультатПример 2. Работа isalnum()
name = "M0n1caG3ll3r" if name.isalnum() == True: print("Все символы строки (name) являются буквами и цифрами.") else: print("Символы не являются буквенно-цифровыми.")isalpha Python
Метод isalpha Python, проверяет являются ли все символы в строке алфавитными буквами, в случае если это так, возвращает True , иначе False .
Пример 1. Работа isalpha
name = "Monica" print(name.isalpha()) # С пробелом name = "Monica Geller" print(name.isalpha()) # С цифрами name = "Mo3nicaGell22er" print(name.isalpha()) #РезультатПример 2. Работа isalpha
name = "MonicaGeller" if name.isalpha() == True: print("Все строки являются буквенными") else: print("Не являются буквенными") #РезультатAll characters are alphabetsPython isdecimal
Метод Python isdecimal проверяет, есть ли в строке десятичные символы. В случае если десятичные символы присутствуют, то он возвращает нам значение True , иначе возвращает значение False .
Пример 1. Работа с isdecimal
s = "28212" print(s.isdecimal()) # contains alphabets s = "32ladk3" print(s.isdecimal()) # contains alphabets and spaces s = "Mo3 nicaG el l22er" print(s.isdecimal()) #РезультатТак же существуют еще два метода isdigit() и isnumeric() , которые так же проверяют содержит ли строка цифровые символы, советую вам так же с ними ознакомиться.
isdigit Python
В предыдущем блоке, я описал метод isdecimal() , метод isdigit() работает похожим образом. Данный метод вернет нам значение True , еси все символы в строке являются цифрами, или false в противном случае.
str1 = '342' print(str1.isdigit()) str2 = 'python' print(str2.isdigit()) # Результат: True # FalseПример. Работа с методом isdigit
s = "28212" print(s.isdigit()) # Содержит буквы и цифры s = "Mo3 nicaG el l22er" print(s.isdigit()) #РезультатВ Python надстрочные и подстрочные индексы так же считаются цифровым символом. Соответственно, в случае если в строке содержатся такие символы, то метод isdigit() вернет нам значение True .
Римские цифры к примеру считаются цифровыми символами, но не цифрами, соответственно метод isdigit() вернет нам значение false .
Для проверки, является ли символ числовым, вы можете воспользоваться методом isnumeric() .
islower Python
Метод islower python проверяет являются ли все буквы в строке, буквами нижнего регистра. В случае, если все буквы являются буквами нижнего регистра, метод islower() вернет нам значение True , в случае если в строке содержится хотя бы один заглавный символ, мы получим значение False .
s = 'this is good' print(s.islower()) s = 'th!s is a1so g00d' print(s.islower()) s = 'this is Not good' print(s.islower()) #РезультатКак использовать метод islower() в программе?
s = 'this is good' if s.islower() == True: print('Does not contain uppercase letter.') else: print('Contains uppercase letter.') s = 'this is Good' if s.islower() == True: print('Does not contain uppercase letter.') else: print('Contains uppercase letter.') #Результат Does not contain uppercase letter. Contains uppercase letter.Совместно с методом islower() настоятельно советую ознакомиться с методом capitalize().
Python isnumeric
Метод isnumeric() возвращает значение True , в случае если все символы в строке являются числовыми символами. В противном случае метод isnumeric() вернет значение False .
Немного разберемся, что является числовым символом в Python.
- Десятичные символы — 0,1,2,3,4,5
- Цифры — Нижний и верхний индекс
- Символы — Дробь, римские цифры, числители валют
Пример. Работа с методом isnumeric()
s = '1242323' print(s.isnumeric()) #s = '²3455' s = '\u00B23455' print(s.isnumeric()) # s = '½' s = '\u00BD' print(s.isnumeric()) s = '1242323' s='python12' print(s.isnumeric()) #Результатisupper Python
Метод isupper Python проверяет находятся ли все символы в строке в верхнем регистре? Метод isupper() возвращает два параметра.
- True — в случае если все символы в строке находятся в верхнем регистре
- False — в случае если все символы в строке находятся в нижнем регистре
Пример 1: Возвращаемое значение isupper()
# Пример строки string = "THIS IS GOOD!" print(string.isupper()); # Цифры и буквы string = "THIS IS ALSO G00D!" print(string.isupper()); # Строка с нижним регистром string = "THIS IS not GOOD!" print(string.isupper()); #Результат