slogan3

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
disclaimerOnPageApi image_legal_disclaimer...

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.