Поиск всех слов в тексте с символами испанского языка

Мне нужно найти все слова в тексте, в котором могут быть символы испанского алфавита. Из-за того, что в нем встречаются символы вида "á", регулярное выражение не работает, как нужно. Я пытался сделать так:

import re
import io


with io.open('1.txt', 'rb') as file_for_search:
    for m in re.finditer(rb'\b[\wá]+\b', file_for_search.read()):
        print(m)

Но возникает ошибка:

SyntaxError: bytes can only contain ASCII literal characters

Содержимое файла 1.txt:

Eu augue ut lectus arcu bibendum at va

ábaco
abdomen
abeja
abierto
abogado
abono
aborto
abrazo
abrir
abuelo
abuso
acabar

rus faucibus ornare

Результат работы скрипта (если регулярка выглядит так rb'\b\w+\b'):

<re.Match object; span=(36, 38), match=b'va'>
<re.Match object; span=(42, 43), match=b'a'>  <-- 1 часть слова
<re.Match object; span=(45, 49), match=b'baco'>  <-- 2 часть слова
<re.Match object; span=(51, 58), match=b'abdomen'>
<re.Match object; span=(60, 65), match=b'abeja'>

Тут одно слово разбивается на две части, что недопустимо.

Если использовать регулярку вида r'\b[\wa-zñáéíóúü]+\b' и читать файл в обычном режиме "r", то искомое слово отображается криво:

<re.Match object; span=(40, 47), match='aМЃbaco'>

Подскажите регулярное выражение или способ, как решить задачу по поиску слов, в том числе и испанских.. При решении задачи важно использовать конструкцию "for m in re.finditer". Режим "rb" в файле НЕ обязателен, можно использовать обычный "r".

Дополнительно: было бы хорошо найти способ, с помощью которого можно искать также слова и из французского алфавита. Там тоже есть символы вида "é". А также символы японского языка:

あらいぐま
あらし
あらすじ

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

Автор решения: Edward Grachev

Самый быстрый способ:

import string
import io

alphabet = string.ascii_lowercase
with io.open('111.txt', 'r') as file_for_search:
    for line in file_for_search.readlines():
        for symbol in line.strip().lower():
            if symbol not in alphabet:
                print(line)

Вот еще 1 способ на исключение через finditer

import re

with open('111.txt', 'r', encoding='UTF-8') as file:
    for line in file.readlines():
        search = re.finditer(r'\w+', line.strip())
        if len(list(search)) > 1:
            print(line)
→ Ссылка