vorweg - ich bin relativ neu mit Python unterwegs und bastle an einem Skript, welches
(1) von einer URL Daten im JSON Format abruft
(2) einzelne Attribute filtert
(3) aus den Daten mittel Pandas eine HTML-Tabelle erzeugt
(4) Die HTML-Datei auf einer URL per SFTP bereitstellt
Grundsätzlich klappt das alles schon. Ich wollte nun ein Attribut in Schritt (2) durch Verkettung mit HTML-Code anreichern und habe dabei zwei Probleme:
- zum einen werden die im HTML-Code befindlichen "<" und ">" Zeichen in < und > umgewandelt
- zum anderen möchte ich im HTML-Code ein ein Hex-Farbcode verwenden, z.B. #FFFFF - das "#" Zeichen habe ich daher mit \ escaped. Dadurch kommt es allerdings auch mit dem \ in der HTML Tabelle an...
Hier die relevanten Code Teile:
Code: Alles auswählen
# Schritt 1: JSON von URL abrufen
json_url = 'http://192.168.199.xxx/api/'
response = requests.get(json_url)
response.raise_for_status() # Fehler prüfen
data = response.json()
# Schritt 2: Benötigte Attribute filtern
filtered_data = []
for entry in data:
filament_info = entry.get('filament', {})
vendor_info = filament_info.get('vendor', {})
name = vendor_info.get('name')
material = filament_info.get('material')
farbe = filament_info.get('name')
farbe_hex = '<div class="color-box" style="background-color: \#' + filament_info.get('color_hex') + ';"></div>;'
weight_info = str(round(entry.get('remaining_weight'))) + 'g'
filtered_data.append({'Hersteller': name, 'Material': material, 'Farbe': farbe, 'Farbcode': farbe_hex, 'Gewicht': weight_info})
# Schritt 3: In eine HTML-Tabelle umwandeln
df = pd.DataFrame(filtered_data)
html_table = df.to_html(index=False)
Code: Alles auswählen
farbe_hex = '<div class="color-box" style="background-color: \#' + filament_info.get('color_hex') + ';"></div>;'
Code: Alles auswählen
<td><div class="color-box" style="background-color: \#000000;"></div>;</td>
Code: Alles auswählen
<td><div class="color-box" style="background-color: #000000;"></div>;</td>
Wäre für jeden Tipp dankbar!