Решил написать свой вариант такой функции, чтобы продемонстрировать её
несовершенство. Вариант с флагом и только русскими буквами делать не стал, сделал с процентами. Третья проверка не проходит, тк русских букв слишком мало в соотношении с другими, хотя текст по сути русский. Но это скорее исключение, в целом такая функция имеет место быть, но лучше перестраховаться от разных вариантов.
import string
def is_russian(text):
alpha = "абвгдеёжзиклмнопрстуфхцчшщъыьэюя"
new_text = text.translate(str.maketrans('', '', string.punctuation)).lower().replace(' ', '')
rulet = 0
for letter in new_text:
if letter in alpha:
rulet += 1
# Если больше или равно 70%
if rulet/len(new_text) >= 0.7:
return(True)
else:
return(False)
good_text = "Какой-то текст, со знаками препинания, конечно же, sorry!"
bad_text = "Some english text, isn't russian."
secret = "Люблю Gucci"
print(is_russian(good_text)) #вернёт True
print(is_russian(bad_text)) #вернёт False
print(is_russian(secret)) #вернёт False