更改 Dominate 中单元格的样式或背景 table (Python)
Change the style or background of a cell in Dominate table (Python)
这是我的 csv 文件中的示例(假设 xxxx.img 实际上是 http://my.website.me/xxxx.img)
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
我想将此 csv 显示为 HTML table,其中每个图像 url 都可以使用网络 url 从网络上抓取并显示在 table。如果 LHS_color 与 RHS_color 相同,我希望 table 中的那一行具有灰色背景。
这是我目前在 Python 中使用 dominate
包的结果:
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
设置输入 csv 和输出的名称 html(将它们命名为 inFileName 和 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'}
最后的 if
语句是我不知道如何在句法上输入的内容。一般来说,我很难找到 html table 的主要示例,所以如果有人有好的资源,请发表评论。
我从未使用过 dominate,但通常最好对 css 属性(如背景颜色)使用样式 sheets。我只想在这里包含一个外部样式 sheet,如果它满足您的条件,则给该行一个特定的 class。
例如。 style.css:
.grey_background {
background-color: grey;
}
添加一个link(在with document(title...
行之后:
with doc.head:
link(rel='stylesheet', href='style.css')
最后,添加 class - 而不是:l = tr()
,做类似的事情:
l = tr(_class='grey_background') if row[2] == row[5] else tr()
编辑:或者,对于内联样式
因为它似乎支持关键字,所以下面应该可以工作:
l = tr(style="background-color: grey") if row[2] == row[5] else tr()
这是我的 csv 文件中的示例(假设 xxxx.img 实际上是 http://my.website.me/xxxx.img)
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
我想将此 csv 显示为 HTML table,其中每个图像 url 都可以使用网络 url 从网络上抓取并显示在 table。如果 LHS_color 与 RHS_color 相同,我希望 table 中的那一行具有灰色背景。
这是我目前在 Python 中使用 dominate
包的结果:
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
设置输入 csv 和输出的名称 html(将它们命名为 inFileName 和 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'}
最后的 if
语句是我不知道如何在句法上输入的内容。一般来说,我很难找到 html table 的主要示例,所以如果有人有好的资源,请发表评论。
我从未使用过 dominate,但通常最好对 css 属性(如背景颜色)使用样式 sheets。我只想在这里包含一个外部样式 sheet,如果它满足您的条件,则给该行一个特定的 class。
例如。 style.css:
.grey_background {
background-color: grey;
}
添加一个link(在with document(title...
行之后:
with doc.head:
link(rel='stylesheet', href='style.css')
最后,添加 class - 而不是:l = tr()
,做类似的事情:
l = tr(_class='grey_background') if row[2] == row[5] else tr()
编辑:或者,对于内联样式
因为它似乎支持关键字,所以下面应该可以工作:
l = tr(style="background-color: grey") if row[2] == row[5] else tr()