簡體   English   中英

我的 python 列表完全打印在 HTML 表的一行中

[英]My python list is being printed entirely in one row in a HTML table

我正在制作一個 python 腳本,該腳本制作一個帶有列表(沒有模塊)的 html 表,但它會在一行中打印整個列表,而不是像我需要的那樣包裝它。 我的清單是data = ['1', '2', '3', ... , '30'] 我試圖讓它在每行中包含 5 個單元格(不計算側標題),但我不斷在每一行中打印整個列表:

這是一個空白表供參考:

我的代碼,

classes = {"ILA":'#d0e2f3', "Math":'#f5cacc', "Science":'#d9ead3', "Social<br>Studies":'#ffe598', "Academy<br>Connect!":
    '#dad2e9', "Elective":'#f9cb9c'}

file = open("/Users/EhMehMan/PythonProjects/agenda/output.html", "w")

table = "<h3>Date:__________________________________________________________</h3>\n<head>\n<style>table, th, td" \
        " {\nborder: 3px solid black;\nborder-collapse: collapse;\n}\n</style>\n</head>\n<table style='width:100%'>\n"

#-----------------------------------------------------------------------------------

table += "  <tr>\n"
table += "    <th>{0}</th>\n".format(" ")
for z in days:
    table += "    <th style = 'height:74px;width:350px'>{text}</th>\n".format(text=z)
table += "  </tr>\n"


for x in classes.keys():
    table += "  <tr>\n"
    table += "    <th style='height:100px;width:100px' bgcolor='{color}'>{classes}</th>\n".format(color=classes[x],classes=x)
    for element in data:
        table += "    <td>{cell}</td>\n".format(cell = element)
    table += "  </tr>\n"
table += "</table>"
#-----------------------------------------------------------------------------------

file.writelines(table)

任何幫助都會很棒!

for element in data:為每一行迭代整個數據集。 您需要將其調整為以len(days)大小的塊運行,每行遞增。

有幾種方法可以做到這一點。 一種復雜的方法是創建一個迭代器,將datazip與外部循環中的classes.keys一起分塊。 一個更簡單的方法是在外循環的運行之間維護一個計數器:

for index, subject in enumerate(classes):
    table += "  <tr>\n"
    table += f"    <th style='height:100px;width:100px' bgcolor='{classes[subject]}'>{subject}</th>\n"
    for i in range(len(days)):
        table += f"    <td>{data[index * len(days) + i]}</td>\n"
    table += "  </tr>\n"

一種更快的方法是直接寫入文件,而不是在 memory 中累積一個巨大的字符串。 此外,使用with塊對文件進行操作,以便在出現錯誤時正確釋放資源。 所以對於上面的例子:

with open("/Users/EhMehMan/PythonProjects/agenda/output.html", "w") as file:
    file.write('<h3>Date:__________________________________________________________</h3>\n')
    file.write('<head>\n')
    file.write('  <style>table, th, td {\nborder: 3px solid black;\n')
    file.write('    border-collapse: collapse;\n}\n')
    file.write('  </style>\n')
    file.write('</head>\n\n')
    file.write('<table style='width:100%'>\n')

    ...

    for index, (subject, color) in enumerate(classes.items()):
        file.write('  <tr>\n')
        file.write(f'    <th style="height:100px;width:100px" bgcolor="{color}">{subject}</th>\n')
        for i in range(len(days)):
            file.write(f'    <td>{data[index * len(days) + i]}</td>\n')
        file.write('  </tr>\n')
    file.write('</table>')

請注意,使用 f 字符串格式化會容易得多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM