bugfix
This commit is contained in:
@@ -98,6 +98,52 @@ def simple_normalize_url(url):
|
||||
except Exception as e:
|
||||
return "k.A."
|
||||
|
||||
def normalize_string(s):
|
||||
"""
|
||||
Normalisiert Sonderzeichen in einem String anhand eines umfangreichen Mappings.
|
||||
Ersetzt beispielsweise:
|
||||
- Deutsche Umlaute: ü -> ue, ö -> oe, ä -> ae, ß -> ss
|
||||
- Verschiedene diakritische Zeichen: č, ć -> c; š -> s; ž -> z; etc.
|
||||
- Auch weitere Buchstaben mit Akzenten werden konvertiert.
|
||||
"""
|
||||
replacements = {
|
||||
# Deutsche Umlaute und spezielle Buchstaben
|
||||
'Ä': 'Ae', 'Ö': 'Oe', 'Ü': 'Ue', 'ß': 'ss',
|
||||
'ä': 'ae', 'ö': 'oe', 'ü': 'ue',
|
||||
# Lateinische Buchstaben mit Akzenten
|
||||
'À': 'A', 'Á': 'A', 'Â': 'A', 'Ã': 'A', 'Å': 'A', 'Æ': 'AE',
|
||||
'à': 'a', 'á': 'a', 'â': 'a', 'ã': 'a', 'å': 'a', 'æ': 'ae',
|
||||
'Ç': 'C', 'ç': 'c',
|
||||
'È': 'E', 'É': 'E', 'Ê': 'E', 'Ë': 'E',
|
||||
'è': 'e', 'é': 'e', 'ê': 'e', 'ë': 'e',
|
||||
'Ì': 'I', 'Í': 'I', 'Î': 'I', 'Ï': 'I',
|
||||
'ì': 'i', 'í': 'i', 'î': 'i', 'ï': 'i',
|
||||
'Ñ': 'N', 'ñ': 'n',
|
||||
'Ò': 'O', 'Ó': 'O', 'Ô': 'O', 'Õ': 'O', 'Ø': 'O',
|
||||
'ò': 'o', 'ó': 'o', 'ô': 'o', 'õ': 'o', 'ø': 'o',
|
||||
'Œ': 'OE', 'œ': 'oe',
|
||||
'Š': 'S', 'š': 's',
|
||||
'Ž': 'Z', 'ž': 'z',
|
||||
'Ý': 'Y', 'ý': 'y', 'ÿ': 'y',
|
||||
# Zusätzliche spezifische Buchstaben
|
||||
'Đ': 'D', 'đ': 'd',
|
||||
'č': 'c', 'Č': 'C', 'ć': 'c', 'Ć': 'C',
|
||||
'ł': 'l', 'Ł': 'L',
|
||||
'ğ': 'g', 'Ğ': 'G',
|
||||
'ş': 's', 'Ş': 'S',
|
||||
# Weitere diakritische Zeichen (z. B. aus osteuropäischen Sprachen)
|
||||
'ă': 'a', 'Ă': 'A',
|
||||
'ı': 'i', 'İ': 'I',
|
||||
'ň': 'n', 'Ň': 'N',
|
||||
'ř': 'r', 'Ř': 'R',
|
||||
'ő': 'o', 'Ű': 'U', 'ű': 'u', 'Ű': 'U',
|
||||
'ț': 't', 'Ț': 'T',
|
||||
'ș': 's', 'Ș': 'S'
|
||||
}
|
||||
for src, target in replacements.items():
|
||||
s = s.replace(src, target)
|
||||
return s
|
||||
|
||||
def get_gender(firstname):
|
||||
"""
|
||||
Ermittelt das Geschlecht anhand des Vornamens.
|
||||
@@ -131,19 +177,20 @@ def get_gender(firstname):
|
||||
def get_email_address(firstname, lastname, website):
|
||||
"""
|
||||
Generiert eine E-Mail-Adresse im Format vorname.nachname@domain.tld.
|
||||
Dabei wird der Domainname aus der Website extrahiert.
|
||||
Dabei wird der Domainname aus der Website extrahiert und Vor- und Nachname
|
||||
zunächst mittels normalize_string normalisiert.
|
||||
"""
|
||||
# Falls die Website keinen Protokoll-Präfix hat, hinzufügen, um das Parsen zu ermöglichen
|
||||
# Falls Website nicht mit http/https beginnt, Protokoll hinzufügen
|
||||
url = website if website.startswith("http") else "http://" + website
|
||||
parsed = urlparse(url)
|
||||
domain = parsed.netloc
|
||||
if domain.startswith("www."):
|
||||
domain = domain[4:]
|
||||
# Entferne Nicht-Alphanumerische Zeichen aus Vor- und Nachnamen und wandle in Kleinbuchstaben um
|
||||
f = re.sub(r'\W+', '', firstname.lower())
|
||||
l = re.sub(r'\W+', '', lastname.lower())
|
||||
if f and l:
|
||||
return f"{f}.{l}@{domain}"
|
||||
# Vor- und Nachname normalisieren, in Kleinbuchstaben umwandeln und nicht-alphanumerische Zeichen entfernen
|
||||
normalized_first = re.sub(r'\W+', '', normalize_string(firstname.lower()))
|
||||
normalized_last = re.sub(r'\W+', '', normalize_string(lastname.lower()))
|
||||
if normalized_first and normalized_last:
|
||||
return f"{normalized_first}.{normalized_last}@{domain}"
|
||||
else:
|
||||
return ""
|
||||
|
||||
|
||||
Reference in New Issue
Block a user