From 917b2acebe117d1d5d0f50f8a1ea86291e56bfad Mon Sep 17 00:00:00 2001 From: Floke Date: Tue, 1 Apr 2025 03:30:45 +0000 Subject: [PATCH] =?UTF-8?q?Optimierung=20der=20Umsatz-=20und=20Mitarbeiter?= =?UTF-8?q?extraktion;=20Re=E2=80=91Evaluierungsmodus=20ohne=20Zeileneinga?= =?UTF-8?q?be=20(v1.1.8)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Umsatz-Extraktion: Erweiterte Regex, um Zahlenstrings robust zu normalisieren: Entfernt Tausendertrennzeichen (Punkte und Leerzeichen). Verwendet Komma als Dezimaltrenner, falls vorhanden. Wenn keine Einheit (Mio, Mrd) vorhanden ist, wird der Wert als Euro angenommen und durch 1.000.000 geteilt. Mitarbeiter-Extraktion: Erweiterung der Schlüsselwortliste (z. B. "mitarbeiterzahl", "angestellte", "belegschaft", "personalstärke"). Falls "mitarbeiterzahl" explizit vorkommt, wird direkt der Zahlenwert danach extrahiert. Re‑Evaluierungsmodus: Im Modus "2" werden alle Zeilen verarbeitet, bei denen in Spalte A ein "x" steht, ohne dass nach der Anzahl der zu überprüfenden Zeilen gefragt wird. Übersprungene Zeilen werden nicht geloggt. Spaltenanpassungen: Im normalen Modus: Firmenname in Spalte A, Website in Spalte B; Ausgabe in G:K, Datum in N, Version in Q. Im Re‑Evaluierungsmodus: Firmenname in Spalte B, Website in Spalte C; Ausgabe in H:L, Datum in O, Version in R. --- brancheneinstufung.py | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/brancheneinstufung.py b/brancheneinstufung.py index dda3ac8f..a5d12f5f 100644 --- a/brancheneinstufung.py +++ b/brancheneinstufung.py @@ -12,7 +12,7 @@ import csv # ==================== KONFIGURATION ==================== class Config: - VERSION = "1.1.7" # Neue Version + VERSION = "1.1.8" # Neue Version LANG = "de" CREDENTIALS_FILE = "service_account.json" SHEET_URL = "https://docs.google.com/spreadsheets/d/1u_gHr9JUfmV1-iviRzbSe3575QEp7KLhK5jFV_gJcgo" @@ -199,9 +199,12 @@ class WikipediaScraper: return raw_value.strip() if target == 'mitarbeiter': raw = raw_value.lower() - # Falls "mitarbeiterzahl" explizit vorkommt, entferne diesen Teil + # Spezifisch nach "mitarbeiterzahl" suchen und den direkt folgenden Zahlenwert extrahieren if "mitarbeiterzahl" in raw: - raw = raw.split("mitarbeiterzahl")[-1] + match = re.search(r'mitarbeiterzahl\D*(\d+)', raw) + if match: + return match.group(1) + # Alternativ: Finde die erste Zahl numbers = re.findall(r'\d+', raw) if numbers: return numbers[0] @@ -271,7 +274,6 @@ class DataProcessor: self.sheet_handler = GoogleSheetHandler() self.wiki_scraper = WikipediaScraper() def process_rows(self, num_rows=None): - # Im Re-Evaluierungsmodus wird num_rows ignoriert. if MODE == "2": print("Re-Evaluierungsmodus: Verarbeitung aller Zeilen mit 'x' in Spalte A.") else: @@ -279,17 +281,12 @@ class DataProcessor: print(f"Starte bei Zeile {start_index+1}") for i, row in enumerate(self.sheet_handler.sheet_values[1:], start=2): if MODE == "2": - # Nur Zeilen mit "x" in Spalte A verarbeiten if row[0].strip().lower() == "x": self._process_single_row(i, row) else: - # Normalmodus: Alle Zeilen ab Startindex verarbeiten if i >= self.sheet_handler.get_start_index(): self._process_single_row(i, row) def _process_single_row(self, row_num, row_data): - # Modusabhängige Verarbeitung: - # Normalmodus (Modus "1"): Firmenname in Spalte A, Website in Spalte B; Ausgabe in G:K, Datum in N, Version in Q. - # Re-Evaluierungsmodus (Modus "2"): Nur Zeilen mit "x" in Spalte A; Firmenname in Spalte B, Website in Spalte C; Ausgabe in H:L, Datum in O, Version in R. if MODE == "2": company_name = row_data[1] if len(row_data) > 1 else "" website = row_data[2] if len(row_data) > 2 else ""