@Skelen

Как завуалировать каждый символ текста?

Всем привет, мне нужно, чтобы в массив завуалировался каждый символ
zav = {'a': ['а', '@', 'A'], 'b': ['b', 'б']}
word = 'abb'

black_word = {}
for i in word:
    s = 1
    for k in zav[i]:
        if s not in black_word:
            black_word[s] = ''
        black_word[s] += k
        print(str(k))
        s += 1
print(str(black_word))


Сейчас он мне выдает:
{1: 'аb', 2: '@б', 3: 'A'}

А мне нужно:
{1: ['ab'], 2: ['aб'], 3: ['@b'], 4: ['@б'], 5: ['Ab'], 6: ['Aб']}
  • Вопрос задан
  • 165 просмотров
Решения вопроса 1
@o5a
Можно например сформировать все варианты таких подстановок и сравнивать с ними.
from itertools import product

zav = {'a': ['а', '@', 'A'], 'b': ['b', 'б'], 'ч': ['4'], 'и': ['u'], 'к': ['k']}
bad_word = "пончик"

# список всех возможных вариантов подстановки
bad_words = [''.join(word) for word in product(*[[x]+zav.get(x, []) for x in bad_word])]
print(bad_words)
# ['пончик', 'пончиk', 'пончuк', 'пончuk', 'пон4ик', 'пон4иk', 'пон4uк', 'пон4uk']


Другой вариант вижу в использовании regexp, примерно похожим образом из bad_word "пончик" и нашего словаря формируем универсальный шаблон "(п)(о)(н)(ч|4)(и|u)(к|k)" под который попадут все варианты.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@alekssamos
Программист любитель
Вам нужно найти все слова, где есть и русские буквы, и английские?
text = "3@pa6oтать дeньги, 3apa6oтok бeз вложений."
words = re.findall("[\\w@#]+", text, flags=re.IGNORECASE)
words = [f for f in words if re.findall("[a-zA-Z]", f) and re.findall("[а-яА-ЯЁ]", f)]
Ответ написан
@qid00000000
Мало что знаю, но информацию найду в гугле
Дак может вам нужно два for, а не один?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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