diff --git a/brancheneinstufung.py b/brancheneinstufung.py index 1033601d..d3a5955f 100644 --- a/brancheneinstufung.py +++ b/brancheneinstufung.py @@ -12,7 +12,7 @@ import csv # ==================== KONFIGURATION ==================== class Config: - VERSION = "1.1.10" # Neue Version mit verbesserter Umsatz- und Mitarbeiterextraktion + VERSION = "1.1.11" # Neue Version mit verbesserter Umsatz- und Mitarbeiterextraktion LANG = "de" CREDENTIALS_FILE = "service_account.json" SHEET_URL = "https://docs.google.com/spreadsheets/d/1u_gHr9JUfmV1-iviRzbSe3575QEp7KLhK5jFV_gJcgo" @@ -180,6 +180,7 @@ class WikipediaScraper: match = re.search(r'([\d.,]+)', raw) if match: num_str = match.group(1) + # Falls Komma vorhanden: Punkte als Tausendertrennzeichen entfernen, Komma als Dezimaltrenner ersetzen if ',' in num_str: num_str = num_str.replace('.', '').replace(',', '.') else: @@ -199,20 +200,27 @@ class WikipediaScraper: return raw_value.strip() if target == 'mitarbeiter': raw = raw_value.lower() - # Suche nach "mitarbeiterzahl" oder "mitarbeiter" gefolgt von Zahlen (inkl. Tausendertrennzeichen) + # Spezifisch nach "mitarbeiterzahl" suchen, um den direkt folgenden Zahlenwert zu extrahieren. match = re.search(r'(?:mitarbeiterzahl|mitarbeiter)[^\d]*([\d.,\s]+)', raw) if match: num_str = match.group(1) + # Entferne Tausendertrennzeichen (Punkte oder Leerzeichen) num_str = num_str.replace(" ", "") - # Entferne alle Zeichen, die keine Ziffern sind + # Falls es nur Punkte und keine Kommas gibt, behandeln wir diese als Tausendertrennzeichen. + if '.' in num_str and ',' not in num_str: + num_str = num_str.replace('.', '') + # Entferne eventuell verbleibende nicht-numerische Zeichen. num_str = re.sub(r'[^\d]', '', num_str) if num_str: debug_print(f"Mitarbeiterzahl gefunden: {num_str} in Text: {raw_value}") return num_str - # Fallback: Kombiniere alle gefundenen Zahlen - numbers = re.findall(r'\d+', raw) - if numbers: - return "".join(numbers) + # Fallback: Falls keine spezifische Suche funktioniert, versuche die erste Zahl zu extrahieren. + match = re.search(r'(\d{1,3}(?:\.\d{3})+|\d+)', raw) + if match: + num_str = match.group(1) + if '.' in num_str and ',' not in num_str: + num_str = num_str.replace('.', '') + return num_str return raw_value.strip() return "k.A." def extract_full_infobox(self, soup):