v1.3.0: Neue Spaltenzuordnung, verbesserte numerische Extraktion & 1 Sekunde Pause
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.
This commit is contained in:
@@ -14,7 +14,7 @@ import csv
|
|||||||
|
|
||||||
# ==================== KONFIGURATION ====================
|
# ==================== KONFIGURATION ====================
|
||||||
class Config:
|
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"
|
LANG = "de"
|
||||||
CREDENTIALS_FILE = "service_account.json"
|
CREDENTIALS_FILE = "service_account.json"
|
||||||
SHEET_URL = "https://docs.google.com/spreadsheets/d/1u_gHr9JUfmV1-iviRzbSe3575QEp7KLhK5jFV_gJcgo"
|
SHEET_URL = "https://docs.google.com/spreadsheets/d/1u_gHr9JUfmV1-iviRzbSe3575QEp7KLhK5jFV_gJcgo"
|
||||||
@@ -72,17 +72,18 @@ def normalize_company_name(name):
|
|||||||
return normalized.lower()
|
return normalized.lower()
|
||||||
|
|
||||||
def extract_numeric_value(raw_value, is_umsatz=False):
|
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:
|
if not raw_value:
|
||||||
return "k.A."
|
return "k.A."
|
||||||
# Entferne gängige Zusätze wie "ca.", "circa", "über" etc.
|
# 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_value = re.sub(r'\b(ca\.?|circa|über)\b', '', raw_value, flags=re.IGNORECASE)
|
||||||
raw = raw_value.lower().replace("\xa0", " ")
|
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():
|
if not match or not match.group(1).strip():
|
||||||
debug_print(f"Keine numerischen Zeichen gefunden im Rohtext: '{raw_value}'")
|
debug_print(f"Keine numerischen Zeichen gefunden im Rohtext: '{raw_value}'")
|
||||||
return "k.A."
|
return "k.A."
|
||||||
num_str = match.group(1)
|
num_str = unicodedata.normalize("NFKC", match.group(1))
|
||||||
if ',' in num_str:
|
if ',' in num_str:
|
||||||
num_str = num_str.replace('.', '').replace(',', '.')
|
num_str = num_str.replace('.', '').replace(',', '.')
|
||||||
try:
|
try:
|
||||||
@@ -404,7 +405,7 @@ class DataProcessor:
|
|||||||
self._process_single_row(i, row)
|
self._process_single_row(i, row)
|
||||||
def _process_single_row(self, row_num, row_data):
|
def _process_single_row(self, row_num, row_data):
|
||||||
# Neues Schema:
|
# Neues Schema:
|
||||||
# B: Firmenname, C: Website
|
# Spalte B: Firmenname, Spalte C: Website
|
||||||
# Wikipedia-Daten: Spalten K bis Q
|
# Wikipedia-Daten: Spalten K bis Q
|
||||||
# ChatGPT Umsatz: Spalte AF
|
# ChatGPT Umsatz: Spalte AF
|
||||||
# CRM Umsatz in Spalte I (Index 8)
|
# CRM Umsatz in Spalte I (Index 8)
|
||||||
@@ -441,7 +442,7 @@ class DataProcessor:
|
|||||||
company_data.get('categories', 'k.A.')
|
company_data.get('categories', 'k.A.')
|
||||||
]
|
]
|
||||||
self.sheet_handler.sheet.update(values=[wiki_values], range_name=wiki_update_range)
|
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)
|
time.sleep(1)
|
||||||
# ChatGPT API: Umsatzbewertung basierend auf Firmenname und Wikipedia-Umsatz
|
# ChatGPT API: Umsatzbewertung basierend auf Firmenname und Wikipedia-Umsatz
|
||||||
wiki_umsatz = company_data.get('umsatz', 'k.A.')
|
wiki_umsatz = company_data.get('umsatz', 'k.A.')
|
||||||
|
|||||||
Reference in New Issue
Block a user