@kaviorneli
Компьютерный лингвист

Как удалить строку в python, если в ней менее 2 русских букв?

Нужно написать функцию, которая получает на вход строки и удаляет те, в которых нет русских букв или есть только одна.

import re 

def delete_words_without_russian_lettres(massive_of_strings): 
    new_massive = []
    for element in massive_of_strings: 
        if re.findall("[а-яА-ЯЁё]{2,}", element):
            new_massive.append(element) 
    return new_massive

print(delete_words_without_russian_lettres(['aраврарарa', 'vygnjgm', 'бб', 'в city', 'молодой человек', 'к python р']))

Создал новый список, в который должны попадать строки с 2 русскими буквами и более, но не работает как должно. В чем может быть проблема?
  • Вопрос задан
  • 161 просмотр
Решения вопроса 1
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
Ну, во-первых, вы возвращаете тот же список, что принимаете на входе, а новый сформированный никуда не возвращаете.
Во-вторых, вы оставляете строки, которые имеют две подряд идущие русские буквы, а если букв будет две, но между ними будет пробел, или английская, или цифра, то вы такую строку проклассифицируете неверно. Регексп у вас не соответствует задаче.

И вам не надо искать все вхождения, достаточно первого признака. Грубо говоря, ам надо искать в строке русскую букву, за которой идёт что угодно и сколько угодно раз (даже ноль раз), а затем идет еще русская буква. Если такая подстрока нашлась, строку надо оставить, иначе пропустить.

Правила этого ресурса запрещеют постить код скриншотами. Нужно постить его текстом в специальном теге или в виде ссылки на онлайн интерпретатор с кодом.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы