mirror of
https://github.com/data-privacy-stack/presidio.git
synced 2026-07-26 12:50:56 -05:00
60 lines
1.7 KiB
Python
60 lines
1.7 KiB
Python
from presidio_analyzer import AnalyzerEngine
|
|
from presidio_anonymizer import AnonymizerEngine
|
|
from presidio_anonymizer.entities import OperatorConfig
|
|
from faker import Faker
|
|
from faker.providers import internet
|
|
|
|
|
|
def reverse_string(x):
|
|
"""Return string in reverse order."""
|
|
return x[::-1]
|
|
|
|
|
|
def anonymize_reverse_lambda(analyzer_results, text_to_anonymize):
|
|
"""Anonymize using an example lambda."""
|
|
anonymized_results = anonymizer.anonymize(
|
|
text=text_to_anonymize,
|
|
analyzer_results=analyzer_results,
|
|
operators={
|
|
"EMAIL_ADDRESS": OperatorConfig("custom", {"lambda": lambda x: x[::-1]})
|
|
},
|
|
)
|
|
|
|
return anonymized_results
|
|
|
|
|
|
def anonymize_faker_lambda(analyzer_results, text_to_anonymize):
|
|
"""Anonymize using a faker provider."""
|
|
|
|
anonymized_results = anonymizer.anonymize(
|
|
text=text_to_anonymize,
|
|
analyzer_results=analyzer_results,
|
|
operators={
|
|
"EMAIL_ADDRESS": OperatorConfig(
|
|
"custom", {"lambda": lambda x: fake.safe_email()}
|
|
)
|
|
},
|
|
)
|
|
|
|
return anonymized_results
|
|
|
|
|
|
if __name__ == "__main__":
|
|
fake = Faker("en_US")
|
|
fake.add_provider(internet)
|
|
|
|
analyzer = AnalyzerEngine()
|
|
anonymizer = AnonymizerEngine()
|
|
|
|
text = "The user has the following two emails: email1@contoso.com and email2@contoso.com" # noqa: E501
|
|
analyzer_results = analyzer.analyze(
|
|
text=text, entities=["EMAIL_ADDRESS"], language="en"
|
|
)
|
|
print(f"Original Text: {text}")
|
|
print(f"Analyzer result: {analyzer_results}\n")
|
|
|
|
print(
|
|
f"Reverse lambda result: {anonymize_reverse_lambda(analyzer_results, text).text}" # noqa: E501
|
|
)
|
|
print(f"Faker lambda result: {anonymize_faker_lambda(analyzer_results, text).text}")
|