Newer
Older
from typing import List, Tuple
from src.detections import (
Detection,
NumberDetection,
)
from src.string_replacements import replace_and_update
from src.replacers.interface import ReplacerInterface
import random
import string
def randomize_digits_in_text(text: str) -> str:
result = ""
for c in text:
if c.isdigit():
result += random.choice(string.digits)
else:
result += c
class NumberReplacer(ReplacerInterface):
def __init__(self):
pass
def replace(
self, text: str, detections: List[Tuple[int, int, Detection]]
) -> Tuple[str, List[Tuple[int, int, Detection]]]:
already_replaced = dict()
for item in detections:
start, end, detection = item
if isinstance(detection, NumberDetection):
if text[start:end] not in already_replaced:
already_replaced[text[start:end]] = randomize_digits_in_text(
text[start:end]
)
replacements.append((start, end, already_replaced[text[start:end]]))
else:
not_processed.append(item)
return replace_and_update(text, replacements, not_processed)