2016-04-12 4 views
1

Hier ist ein Beispiel aus meiner CSV-Datei (sich vorstellen, dass die xxxx.img tatsächlich http://my.website.me/xxxx.img)in Dominieren Tabelle (Python)

LHS_itemname,LHS_img, LHS_color, RHS_itemname, RHS_img, RHS_color 
backpack, bck.img, blue  , lunchbox,  lch.img, blue 
backpack, bck.img, green , lunchbox,  lch.img, blue 

Ich möchte diese csv anzuzeigen, wie ein HTML-Tabelle, in der jede Bild-URL aus dem Web mithilfe der Web-URL abgerufen und in der Tabelle angezeigt werden kann. Und wenn die LHS_color die gleiche wie die RHS_color ist, möchte ich, dass diese Zeile in der Tabelle einen grauen Hintergrund hat.

Hier ist, was ich bisher das dominate Paket in Python:

import os 
import os.path 
import sys 
import csv 
import urllib 
import re 
import glob 
import numpy as np 
from dominate import document 
from dominate.tags import * 
import dominate 

Set Namen für die Eingabe csv und Ausgangs html (nennen wir sie infilename und outfilename)

f = open(inFileName, 'rb') # Path to csv file 
reader = csv.reader(f) 
header = ['LHS_itemname','LHS_img', 'LHS_color', 'RHS_itemname', 'RHS_img', 'RHS_color'] 
with document(title='ItemsBoughtTogether') as doc: 
h1('ItemsBoughtTogether', align = 'Center') 
with table(border='1').add(tbody()): 

    l = thead().add(tr()) 
    for col in header: 
     print col 
     l += td(p(b(str(col)))) 

    l = thead().add(tr()) 
    for row in reader: 
     l = tr() 
     l += td(p(row[0], ALIGN='Center')) 
     l += td(p(row[1], ALIGN='Center')) 
     l += td(div(img(src=row[2]), _class='photo', ALIGN='Center')) # img LHS 
     l += td(p(row[3], ALIGN='Center')) 
     l += td(p(row[4], ALIGN='Center')) 
     l += td(div(img(src=row[6]), _class='photo', ALIGN='Center')) # img RHS 
     if row[2] == row[5]: {background-color:'grey'} 

Diese letzte if Anweisung ist, was ich nicht wissen, wie man syntaktisch einfügt. Es fällt mir schwer, dominante Beispiele mit HTML-Tabellen zu finden. Wenn jemand gute Ressourcen dafür hat, bitte kommentieren.

Antwort

1

Ich habe noch nie dominieren verwendet, aber es ist im Allgemeinen vorzuziehen, Stylesheets für CSS-Attribute (wie Hintergrundfarbe) zu verwenden. Ich würde hier nur ein externes Stylesheet einfügen und dieser Zeile eine bestimmte Klasse geben, wenn sie Ihren Kriterien entspricht.

z. style.css:

.grey_background { 
    background-color: grey; 
} 

in einem Link hinzufügen (nach der with document(title... Linie:

with doc.head: 
    link(rel='stylesheet', href='style.css') 

schließlich die Klasse hinzufügen - statt: l = tr(), so etwas wie:

l = tr(_class='grey_background') if row[2] == row[5] else tr() 

Bearbeiten: Alternativ für einen Inline-Stil

Da es scheint, Schlüsselwörter zu unterstützen, sollte folgendes funktionieren:

+0

Dies ist das einzige, was ich für CSS benötigen würde. Könnte ich es einfach irgendwie im HTML behalten? – skmathur

+0

@skmathur: Wahrscheinlich. Siehe meine Bearbeitung. – Gerrat

+0

Ich habe folgendes versucht: 'if Zeile [2] == Zeile [5]: l = tr (style =" Hintergrundfarbe: grau ") else l = tr()', aber das hat mir den Fehler 'SyntaxError: ungültig gegeben Syntax' – skmathur