Optimierung der Umsatz- und Mitarbeiterextraktion; Re‑Evaluierungsmodus ohne Zeileneingabe (v1.1.8)
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.
This commit is contained in:
@@ -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 ""
|
||||
|
||||
Reference in New Issue
Block a user