Как я могу проверить есть ли в строке python определенные символы

Мне необходимо проверить строку 'gkegfemeeуууее&@(' на то, что есть ли в ей только русские и латинские символы, без учета регистра, если в строке есть какие-то прочие символы - тогда ответ должен быть True, иначе False

Сделать это необходимо как можно короче, но чтобы при этом для меня было понятно, использование регулярок - запрещено.


Ответы (6 шт):

Автор решения: GrAnd

Вроде достаточно коротко и без регулярок.

check = lambda s: not all('a'<=x<='z' or 'а'<=x<='я' for x in s.lower())
print(check('gkegfemeeуууее&@('))
→ Ссылка
Автор решения: MyZik

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

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 -> Все латинские символы в верхнем регистре
  • а-я -> Все символы кириллицы в нижнем регистре
  • А-Я -> Все символы кириллицы в верхнем регистре
  • ёЁ -> Особенные символы русского языка :)
  • + -> Указывает на то, что строка продолжается и может иметь больше одного символа
  • $ -> Указываем на конец строки

Пример на regex101

→ Ссылка
Автор решения: Alpensin

Ещё как вариант проходиться циклом по строке и смотреть входит ли числовое представление символа в заданные диапазоны под латинские символы и кириллицу

# LATIN_RANGE = (65, 122)
# CIRILLIC_RANGE = (1040, 1103)
print(not all(65 <= ord(s) <= 122 or 1040 <= ord(s) <= 1103 for s in "gkegfemeeуууее&@("))
→ Ссылка
Автор решения: SergFSM

думаю самый простой и короткий вариант будет такой:

print('gkegfemeeуууее&@('.isalpha())  # False

str.isalpha() возвращает True если все символы в строке алфавитные, и в строке есть как минимум один символ. В противном случае возвращает False.

→ Ссылка
Автор решения: Vadym Matvieiev
return 'gkegfemeeуууее&@('.isalpha() 

Для данной задачи идеально подойдёт встроенная функция isalpha(), которая определяет являются ли все символы в строке буквами, причем русские буквы тоже распознаются корректно.

→ Ссылка
Автор решения: Vitalik

Как тут выше все сложно объяснено)) Все гораздо проще:

\d - это регулярка, проверяет строку на наличие хотя бы 1 цифры

import re
text = 'привет 3'
if re.search('\d', text): # тут или True или False на выходе
   print('цифры есть')
else:
   print('цифр нет')
→ Ссылка