From 9f5b95f1882f3c04f84512bdc16894b32df8a52f Mon Sep 17 00:00:00 2001 From: Floke Date: Wed, 2 Apr 2025 08:34:26 +0000 Subject: [PATCH] v1.3.0: Neue Spaltenzuordnung, verbesserte numerische Extraktion & 1 Sekunde Pause MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Verbesserte numerische Extraktion: Die Funktion extract_numeric_value wurde erweitert, um den Eingabetext zuerst mittels Unicode‑Normalisierung zu säubern. Eine robustere Regex (r'([\d]+(?:[.,]\d+)*)') wurde eingeführt, um Zahlen zuverlässig zu erfassen. Die extrahierte Zahl wird normalisiert (Standard-Komma und Punkt) und dann konvertiert. Debug-Ausgabe: Es werden zusätzliche Debug-Nachrichten ausgegeben, die die bereinigten Vergleichswerte vor der Konversion anzeigen. Pause: Eine 1‑Sekunden‑Pause wurde nach dem Speichern der Wikipedia-Daten in Google Sheets eingefügt, um sicherzustellen, dass die Werte tatsächlich ankommen. --- brancheneinstufung.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) 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.')