diff --git a/brancheneinstufung.py b/brancheneinstufung.py index d10d83c0..77c09dc3 100644 --- a/brancheneinstufung.py +++ b/brancheneinstufung.py @@ -14,7 +14,7 @@ import csv # ==================== KONFIGURATION ==================== class Config: - VERSION = "v1.2.5" # v1.2.5: Umsatzvergleich verbessert; 1 Sekunde Pause + zusätzliche Debug-Ausgabe + VERSION = "v1.3.0" # v1.3.0: Neue Spaltenzuordnung, verbesserte numerische Extraktion & 1 Sekunde Pause LANG = "de" CREDENTIALS_FILE = "service_account.json" SHEET_URL = "https://docs.google.com/spreadsheets/d/1u_gHr9JUfmV1-iviRzbSe3575QEp7KLhK5jFV_gJcgo" @@ -72,17 +72,18 @@ def normalize_company_name(name): return normalized.lower() def extract_numeric_value(raw_value, is_umsatz=False): - raw_value = raw_value.strip() + raw_value = unicodedata.normalize("NFKC", raw_value.strip()) if not raw_value: return "k.A." # Entferne gängige Zusätze wie "ca.", "circa", "über" etc. raw_value = re.sub(r'\b(ca\.?|circa|über)\b', '', raw_value, flags=re.IGNORECASE) raw = raw_value.lower().replace("\xa0", " ") - match = re.search(r'([\d.,]+)', raw, flags=re.UNICODE) + # Robustere Regex: Erfasst Ziffern, optionale Dezimaltrennzeichen + match = re.search(r'([\d]+(?:[.,]\d+)*)', raw, flags=re.UNICODE) if not match or not match.group(1).strip(): debug_print(f"Keine numerischen Zeichen gefunden im Rohtext: '{raw_value}'") return "k.A." - num_str = match.group(1) + num_str = unicodedata.normalize("NFKC", match.group(1)) if ',' in num_str: num_str = num_str.replace('.', '').replace(',', '.') try: @@ -404,7 +405,7 @@ class DataProcessor: self._process_single_row(i, row) def _process_single_row(self, row_num, row_data): # Neues Schema: - # B: Firmenname, C: Website + # Spalte B: Firmenname, Spalte C: Website # Wikipedia-Daten: Spalten K bis Q # ChatGPT Umsatz: Spalte AF # CRM Umsatz in Spalte I (Index 8) @@ -441,7 +442,7 @@ class DataProcessor: company_data.get('categories', 'k.A.') ] self.sheet_handler.sheet.update(values=[wiki_values], range_name=wiki_update_range) - # Pause einbauen, damit die Werte in Google Sheets aktualisiert werden. + # 1 Sekunde Pause, um sicherzustellen, dass die Daten in Google Sheets gespeichert wurden. time.sleep(1) # ChatGPT API: Umsatzbewertung basierend auf Firmenname und Wikipedia-Umsatz wiki_umsatz = company_data.get('umsatz', 'k.A.')