Как фильтрация регулярных выражений работает в Python при регистрации конфиденциальной информации?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как фильтрация регулярных выражений работает в Python при регистрации конфиденциальной информации?

Сообщение Anonymous »

Я пытаюсь написать скрипт Python, который будет редактировать/скрывать определенные данные, присутствующие в строке, прежде чем выводить их на консоль. Ниже приведен фрагмент моего кода.

Код: Выделить всё

import re
from logging import DEBUG, Logger, basicConfig, getLogger, Filter, LogRecord

SENSITIVE_PATTERNS = [
(
"email_address",
r"([A-Za-z0-9]+[.-_])*[A-Za-z0-9]+@[A-Za-z0-9-]+(\.[A-Z|a-z]{2,})+",
),
]

def create_logger(sensitive_patterns: list = None) -> Logger:
basicConfig(level=DEBUG)
logger = getLogger()
sensitive_data_filter = SensitiveDataFilter(sensitive_patterns)
logger.addFilter(sensitive_data_filter)
return logger

class SensitiveDataFilter(Filter):
def __init__(self, patterns=None):
super().__init__()
self.patterns = patterns or []

def filter(self, record: LogRecord) -> bool:
for pattern in self.patterns:
should_redact = re.search(pattern[1], record.msg)

if should_redact:
record.msg = re.sub(pattern[1], f"", record.msg)

return True

logger = create_logger(
sensitive_patterns=SENSITIVE_PATTERNS,
)

test1 = "[email protected]"
test2 = "A"*55
test3 = test2.lower()
logger.info(f"this is test1 : {test1}")
logger.info(f"this is a test3 : {test3}")
logger.info(f"this is a test2 : {test2}")

Моя цель — скрыть определенную строку в журнале. Например: я хочу скрывать электронные письма всякий раз, когда они регистрируются. Этот фрагмент работает нормально. INFO:root:this is test1 : .
Однако я также хочу сохранить другие журналы такими, какие они есть, если нет совпадений с редактированием. Это приводит к интересной проблеме. Всякий раз, когда у меня есть большая строка в верхнем регистре, скрипт продолжает выполняться и никогда не заканчивается (я предполагаю, что это какой-то бесконечный цикл?).
Однако, похоже, тот же фрагмент, когда выполняется с пониженным регистром строки, кажется работать. ИНФО: root: это тест3 : аааааааааааааааааааааааааааааааааааааааааааааааааааа
Что мне здесь не хватает?
Я пробовал запустить его в режиме отладки , код, кажется, застрял в одном из внутренних вызовов модуля re, но я не могу понять, почему

Подробнее здесь: https://stackoverflow.com/questions/786 ... itive-info
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»