Help me een Python-script ontwikkelen dat gegevensvalidatie en transformatie implementeert op basis van specifieke bedrijfsregels.
description
Door deze prompt te gebruiken, zorgt u ervoor dat uw gegevens nauwkeurig, consistent en afgestemd op uw bedrijfsbehoeften zijn, wat kan leiden tot verbeterde gegevensintegriteit en betere besluitvorming.
prompt
try_prompt
Ik wil een Python-script maken dat inkomende gegevens valideert en transformeert volgens de volgende bedrijfsregels: {{bedrijfsregels}}. Het script moet ervoor zorgen dat gegevens voldoen aan de gespecificeerde format ... more
generate_helper
...
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Om de validatielogica in een Python-script te implementeren voor de gegeven bedrijfsregels, kun je de volgende aanpak volgen:
1. Validatie van leeftijd:
- Controleer of de leeftijd een geheel getal is.
- Controleer of de leeftijd tussen 18 en 65 ligt.
2. Validatie van e-mail:
- Gebruik een reguliere expressie om te controleren of het e-mailadres een geldig formaat heeft.
3. Transformaties:
- Bijvoorbeeld, het omzetten van de e-mail naar lowercase voor uniformiteit.
- Mogelijk het verwijderen van onnodige spaties of het formatteren van de leeftijd.
Voorbeeld van implementatie:
```python
import re
def valideer_leeftijd(leeftijd):
# Controleer of het een geheel getal is
if isinstance(leeftijd, int):
return 18 <= leeftijd <= 65
# Indien de leeftijd als string wordt aangeleverd
elif isinstance(leeftijd, str):
if leeftijd.isdigit():
leeftijd_int = int(leeftijd)
return 18 <= leeftijd_int <= 65
return False
def valideer_email(email):
# Eenvoudige regex voor e-mailvalidatie
patroon = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
return re.match(patroon, email) is not None
def transformeer_email(email):
# Zet alles om naar kleine letters en verwijder spaties
return email.strip().lower()
# Voorbeeld gegevens
gegevens = {
'leeftijd': '30',
'email': ' Voorbeeld@Email.com '
}
# Validatie en transformatie
if valideer_leeftijd(gegevens['leeftijd']):
gegevens['leeftijd'] = int(gegevens['leeftijd'])
else:
print("Ongeldige leeftijd!")
if valideer_email(gegevens['email']):
gegevens['email'] = transformeer_email(gegevens['email'])
else:
print("Ongeldig e-mailadres!")
print(gegevens)
```
Samenvatting:
- Validatielogica controleert of gegevens binnen de gespecificeerde bereiken en formaten vallen.
- Transatiemethoden zoals `.lower()`, `.strip()`, en conversie naar `int` maken de gegevens klaar voor verdere verwerking.
- Door gebruik te maken van functies wordt de code overzichtelijk en herbruikbaar.
provider: deepseek
model: deepseek-chat
Hier is een uitleg over het implementeren van validatielogica en transformatiemethoden in Python voor jouw use-case:
## Validatielogica Implementatie
### 1. Leeftijd Validatie
```python
import re
from datetime import datetime, date
def valideer_leeftijd(leeftijd):
"""Valideert of leeftijd tussen 18 en 65 jaar ligt"""
try:
leeftijd_int = int(leeftijd)
if 18 <= leeftijd_int <= 65:
return True, leeftijd_int
else:
return False, f"Leeftijd {leeftijd} valt buiten toegestaan bereik (18-65)"
except (ValueError, TypeError):
return False, f"Ongeldige leeftijd: {leeftijd}"
```
### 2. E-mail Validatie
```python
def valideer_email(email):
"""Valideert e-mail formaat met regex"""
email_pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
if not email or not isinstance(email, str):
return False, "E-mail mag niet leeg zijn"
if re.match(email_pattern, email.strip()):
return True, email.strip().lower()
else:
return False, f"Ongeldig e-mail formaat: {email}"
```
### 3. Hoofdvalidatiefunctie
```python
def valideer_gebruikersdata(gebruikers_data):
"""Valideert complete gebruikersdataset"""
fouten = []
geldige_data = []
for gebruiker in gebruikers_data:
individuele_fouten = []
# Leeftijd validatie
is_geldig_leeftijd, leeftijd_resultaat = valideer_leeftijd(gebruiker.get('leeftijd'))
if not is_geldig_leeftijd:
individuele_fouten.append(leeftijd_resultaat)
# E-mail validatie
is_geldig_email, email_resultaat = valideer_email(gebruiker.get('email'))
if not is_geldig_email:
individuele_fouten.append(email_resultaat)
if individuele_fouten:
fouten.append({
'gebruiker': gebruiker,
'fouten': individuele_fouten
})
else:
geldige_data.append({
'leeftijd': leeftijd_resultaat,
'email': email_resultaat,
'naam': gebruiker.get('naam', '').strip().title()
})
return geldige_data, fouten
```
## Transactiemethoden (Data Transformatie)
### 1. Data Normalisatie
```python
def normaliseer_data(ruwe_data):
"""Transformeert en normaliseert inkomende data"""
genormaliseerde_data = []
for item in ruwe_data:
genormaliseerd_item = {}
# Naam transformatie
if 'naam' in item:
genormaliseerd_item['naam'] = item['naam'].strip().title()
# E-mail transformatie
if 'email' in item:
genormaliseerd_item['email'] = item['email'].strip().lower()
# Leeftijd transformatie
if 'leeftijd' in item:
try:
genormaliseerd_item['leeftijd'] = int(item['leeftijd'])
except (ValueError, TypeError):
genormaliseerd_item['leeftijd'] = None
genormaliseerde_data.append(genormaliseerd_item)
return genormaliseerde_data
```
### 2. Batch Verwerking
```python
def verwerk_gebruikers_batch(gebruikers_batch):
"""Complete pipeline voor batchverwerking"""
# Stap 1: Normaliseer data
genormaliseerde_data = normaliseer_data(gebruikers_batch)
# Stap 2: Valideer data
geldige_data, fouten = valideer_gebruikersdata(genormaliseerde_data)
# Stap 3: Bereken statistieken
statistieken = {
'totaal_verwerkt': len(gebruikers_batch),
'succesvol': len(geldige_data),
'mislukt': len(fouten),
'succes_percentage': (len(geldige_data) / len(gebruikers_batch)) * 100
}
return {
'geldige_data': geldige_data,
'fouten': fouten,
'statistieken': statistieken
}
```
### 3. Gebruiksvoorbeeld
```python
# Testdata
test_gebruikers = [
{'naam': ' jan jansen ', 'leeftijd': '25', 'email': 'JAN@EXAMPLE.COM'},
{'naam': 'marie pieters', 'leeftijd': '17', 'email': 'marie@invalid'},
{'naam': 'klaas de vries', 'leeftijd': '70', 'email': 'klaas@example.nl'},
{'naam': 'sara bakker', 'leeftijd': 'dertig', 'email': 'sara@example.com'}
]
# Verwerking
resultaat = verwerk_gebruikers_batch(test_gebruikers)
print("Geldige data:")
for gebruiker in resultaat['geldige_data']:
print(f" - {gebruiker}")
print("\nFouten:")
for fout in resultaat['fouten']:
print(f" - Gebruiker: {fout['gebruiker']}")
print(f" Fouten: {fout['fouten']}")
print(f"\nStatistieken: {resultaat['statistieken']}")
```
## Extra Transactiemethoden
### 4. Data Anonymisatie
```python
import hashlib
def anonymiseer_gevoelige_data(gebruikers_data):
"""Anonimiseert gevoelige informatie voor testdoeleinden"""
for gebruiker in gebruikers_data:
if 'email' in gebruiker:
# Vervang e-mail door hash voor privacy
gebruiker['email_hash'] = hashlib.md5(
gebruiker['email'].encode()
).hexdigest()
del gebruiker['email']
return gebruikers_data
```
### 5. Data Export
```python
import json
import csv
def export_geldige_data(geldige_data, bestandsnaam, formaat='json'):
"""Exporteert geldige data naar verschillende formaten"""
if formaat == 'json':
with open(f"{bestandsnaam}.json", 'w', encoding='utf-8') as f:
json.dump(geldige_data, f, indent=2, ensure_ascii=False)
elif formaat == 'csv':
with open(f"{bestandsnaam}.csv", 'w', newline='', encoding='utf-8') as f:
veldnamen = geldige_data[0].keys() if geldige_data else []
writer = csv.DictWriter(f, fieldnames=veldnamen)
writer.writeheader()
writer.writerows(geldige_data)
```
Deze implementatie biedt een robuuste basis voor data validatie en transformatie, met duidelijke scheiding tussen validatielogica en transformatiemethoden.

