Как правильно написать фильтр текста

Рейтинг: 1Ответов: 2Опубликовано: 12.02.2023

Нужна помощь: нужно отфильтровать список с текстом, который будет через итератор отправляться в переводчик, но периодически попадают строки, в которых есть знаки, но нет текста. И если его отправить в переводчик, то произойдет ошибка. Нужно, чтобы сохранились только те элементы, которые содержат в себе текст, при этом не навредив знакам. Например:

compile = re.compile("\w")
chapter = list(filter(compile.match, oldchapter))

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

Ответы

▲ 0Принят

Нужно просто заменить match() на search(), поскольку match() сравнивает строку с шаблоном с начала строки, а search() - с любого места строки.

compile = re.compile("\w")
oldchapter = ['! abra kadabra !', '@ # $', 'всякая всячина', '%$%$%']
chapter = list(filter(compile.search, oldchapter))
print(chapter)
['! abra kadabra !', 'всякая всячина']
▲ 0

Считываете построчно текст?

Не совсем понятна проблема: анализируйте своей регуляркой строку и если в ней есть текст, то отправляйте ее целиком в переводчик со всеми "знаками" без фильтрации.