Как я могу проверить есть ли в строке python определенные символы
Мне необходимо проверить строку 'gkegfemeeуууее&@(' на то, что есть ли в ей только русские и латинские символы, без учета регистра, если в строке есть какие-то прочие символы - тогда ответ должен быть True, иначе False
Сделать это необходимо как можно короче, но чтобы при этом для меня было понятно, использование регулярок - запрещено.
Ответы (6 шт):
Вроде достаточно коротко и без регулярок.
check = lambda s: not all('a'<=x<='z' or 'а'<=x<='я' for x in s.lower())
print(check('gkegfemeeуууее&@('))
Хоть и без регулярки, но попробую объяснить, что это достаточно просто и ничего страшного в регулярных выражениях нет.
import re
regex = "^[a-zA-Zа-яА-ЯёЁ]+$"
string = "gkegfemeeуууее&@("
pattern = re.compile(regex)
print(pattern.search(string) is not None) # False
Пример выведет False для строки gkegfemeeуууее&@(, т.к. она не соответствует нашему регулярному выражению. Разберём нашу регулярку:
^-> Указывает на начало строки[]-> Тут указывает список из разрешённых символов (должно быть что-то из списка)a-z-> Все латинские символы в нижнем регистреA-Z-> Все латинские символы в верхнем регистреа-я-> Все символы кириллицы в нижнем регистреА-Я-> Все символы кириллицы в верхнем регистреёЁ-> Особенные символы русского языка :)+-> Указывает на то, что строка продолжается и может иметь больше одного символа$-> Указываем на конец строки
Ещё как вариант проходиться циклом по строке и смотреть входит ли числовое представление символа в заданные диапазоны под латинские символы и кириллицу
# LATIN_RANGE = (65, 122)
# CIRILLIC_RANGE = (1040, 1103)
print(not all(65 <= ord(s) <= 122 or 1040 <= ord(s) <= 1103 for s in "gkegfemeeуууее&@("))
думаю самый простой и короткий вариант будет такой:
print('gkegfemeeуууее&@('.isalpha()) # False
str.isalpha() возвращает True если все символы в строке алфавитные, и в строке есть как минимум один символ. В противном случае возвращает False.
return 'gkegfemeeуууее&@('.isalpha()
Для данной задачи идеально подойдёт встроенная функция isalpha(), которая определяет являются ли все символы в строке буквами, причем русские буквы тоже распознаются корректно.
Как тут выше все сложно объяснено)) Все гораздо проще:
\d - это регулярка, проверяет строку на наличие хотя бы 1 цифры
import re
text = 'привет 3'
if re.search('\d', text): # тут или True или False на выходе
print('цифры есть')
else:
print('цифр нет')