diff --git a/brancheneinstufung.py b/brancheneinstufung.py index 4846a290..d4c2d84d 100644 --- a/brancheneinstufung.py +++ b/brancheneinstufung.py @@ -13,7 +13,7 @@ import csv # ==================== KONFIGURATION ==================== class Config: - VERSION = "v1.1.14" # v1.1.14: Umsatz in Mio € korrekt; Mitarbeiterzahl als ganze Zahl (Unicode-Normalisierung) + VERSION = "v1.1.15" # v1.1.15: Umsatz in Mio € und Mitarbeiterzahl extrahiert; Unicode normalisiert LANG = "de" CREDENTIALS_FILE = "service_account.json" SHEET_URL = "https://docs.google.com/spreadsheets/d/1u_gHr9JUfmV1-iviRzbSe3575QEp7KLhK5jFV_gJcgo" @@ -42,10 +42,10 @@ def debug_print(message): print(f"[DEBUG] {message}") def clean_text(text): - """Normalize Unicode, entferne Referenzen und extra Whitespace.""" + """Normalisiert Unicode, entfernt Referenzen und extra Whitespace.""" if not text: return "k.A." - # Unicode-Normalisierung (NFKC vereinheitlicht Zeichen) + # Unicode-Normalisierung: Vereinheitlicht ambigue Zeichen (NFKC) text = unicodedata.normalize("NFKC", str(text)) text = re.sub(r'\[\d+\]', '', text) text = re.sub(r'\s+', ' ', text).strip() @@ -76,7 +76,7 @@ def extract_numeric_value(raw_value, is_umsatz=False): """ Extrahiert den numerischen Wert aus raw_value. - Nutzt Komma als Dezimaltrenner, entfernt Punkte als Tausendertrennzeichen. - - Für Umsatz: "mrd" multipliziert mit 1000, bei fehlender Einheit wird durch 1e6 geteilt. + - Für Umsatz: Falls "mrd" vorkommt, wird mit 1000 multipliziert; fehlt eine Einheit, wird durch 1e6 geteilt. - Für Mitarbeiter: Gibt den ganzzahligen Wert zurück. """ raw_value = raw_value.strip() @@ -88,7 +88,7 @@ def extract_numeric_value(raw_value, is_umsatz=False): return "k.A." num_str = match.group(1) if ',' in num_str: - # Entferne Punkte als Tausendertrennzeichen, ersetze Komma durch Punkt + # Entferne Punkte als Tausendertrennzeichen und ersetze Komma durch Punkt num_str = num_str.replace('.', '').replace(',', '.') try: num = float(num_str) @@ -96,7 +96,6 @@ def extract_numeric_value(raw_value, is_umsatz=False): debug_print(f"Fehler bei der Umwandlung von {num_str}: {e}") return "k.A." else: - # Entferne alle Punkte (Tausendertrennzeichen) num_str = num_str.replace(' ', '').replace('.', '') try: num = float(num_str) @@ -212,7 +211,6 @@ class WikipediaScraper: header = row.find('th') if header: header_text = clean_text(header.get_text()).lower() - # Nutze "in" statt "==" um unsichere Unicode-Zeichen zu umgehen if any(kw in header_text for kw in keywords): value = row.find('td') if value: @@ -235,7 +233,7 @@ class WikipediaScraper: tokens = [token.strip() for token in infobox_text.split("|") if token.strip()] for i, token in enumerate(tokens): for field in field_names: - # Verwende "in" um etwaige Unicode-Variationen abzufangen + # Verwende "in", um Varianten und ambigue Unicode-Zeichen abzufangen. if field.lower() in token.lower(): j = i + 1 while j < len(tokens) and not tokens[j]: