Practical Lambda Regex Examples
Scénarios de substitution d'expressions régulières dans le monde réel
Les fonctions lambda combinées avec les expressions régulières offrent des capacités puissantes de transformation de texte dans divers domaines.
Techniques de nettoyage de données
1. Anonymisation d'e-mails
import re
def anonymize_emails(text):
return re.sub(r'(\w+)@(\w+)',
lambda m: f"{m.group(1)[:2]}***@{m.group(2)}",
text)
emails = "Contact john.doe@example.com or jane.smith@company.org"
result = anonymize_emails(emails)
print(result)
## Output: Contact jo***@example.com or ja***@company.org
import re
def standardize_phone_numbers(text):
return re.sub(r'(\d{3})(\d{3})(\d{4})',
lambda m: f"+1 ({m.group(1)}) {m.group(2)}-{m.group(3)}",
text)
contacts = "Call me at 5551234567 or 9876543210"
result = standardize_phone_numbers(contacts)
print(result)
## Output: Call me at +1 (555) 123-4567 or +1 (987) 654-3210
graph TD
A[Lambda Regex Transformation] --> B[Pattern Matching]
B --> C[Dynamic Replacement]
C --> D[Transformed Text]
3. Masquage de cartes de crédit
import re
def mask_credit_card(text):
return re.sub(r'\b(\d{4})(\d{8})(\d{4})\b',
lambda m: f"{m.group(1)}********{m.group(3)}",
text)
transaction = "Card number 4111222233334444 was used"
result = mask_credit_card(transaction)
print(result)
## Output: Card number 4111********4444 was used
4. Conversion dynamique de casse
import re
def convert_case(text):
return re.sub(r'\b\w+\b',
lambda m: m.group(0).upper() if len(m.group(0)) > 3 else m.group(0),
text)
sentence = "The quick brown fox jumps over lazy dog"
result = convert_case(sentence)
print(result)
## Output: THE QUICK BROWN fox JUMPS OVER lazy DOG
Technique |
Complexité |
Cas d'utilisation |
Remplacement simple |
Faible |
Textes courts |
Lambda complexe |
Moyenne |
Transformations dynamiques |
Expression régulière compilée |
Élevée |
Traitement de grands textes |
5. Assainissement des données de journal
import re
def sanitize_logs(log_text):
return re.sub(r'password=[\w@]+',
lambda m: 'password=***REDACTED***',
log_text)
log_entry = "User login: username=admin password=secret123"
result = sanitize_logs(log_entry)
print(result)
## Output: User login: username=admin password=***REDACTED***
Bonnes pratiques
- Utilisez les fonctions lambda pour des transformations concises et à expression unique
- Privilégiez les expressions régulières compilées pour une utilisation répétée
- Testez soigneusement les motifs d'expressions régulières
- Pensez à la performance pour les grands ensembles de données
En maîtrisant ces techniques avec LabEx, vous pouvez efficacement transformer et nettoyer les données textuelles à l'aide de fonctions lambda et d'expressions régulières en Python.