HTML输出有多余的换行符

0 投票
1 回答
24 浏览
提问于 2025-04-14 16:02

下面是我想发送的电子邮件在Outlook中的显示效果。如果你注意到的话,在Title1表格的底部多了一个空行。我不太明白为什么会有这个空行。

   [Paragraph Here]

========================== Title1 ==========================
      Spot      Track    Quality      Combo       Fast
         1          8        218        218        287
         2       2873         58       2877       2935
         3         15        215        215        287
         4        412         52        419        476
         5         16        223        223        282
         6        103         85        139        276

====================================
 ========================
========================= Title2 ==========================
      Spot      Track    Quality      Combo       Fast
         1         69       1956       1958       2514
         2       7339        450       7373       7927
         3        114       1916       1916       2524
         4       3651        465       3669       4017
         5        102       1956       1956       2532
         6       1546        614       1763       2604

============================================================

我正在使用smtplibMIMETextMIMEMultipart来发送带有HTML格式的邮件。我通过把不同的字符串拼接在一起,创建了一个格式化的文本字符串,代码如下:

text = """[Paragraph] \n\n\n\n"""

text += f"{' Title1 ':=^60}\n"
for i in range(6):
    track   = ~flags_outside[f'las{i+5}_trackf'].astype(bool)
    qual    = flags_outside[f'las{i+5}_qualf'].astype(bool)
    combo   = np.logical_or(track,qual)
    fast    = out_arr_outside[:,i]

    nfast   = np.sum(fast)
    ntrack  = np.sum(track)
    nqual   = np.sum(qual)
    ncombo  = np.sum(combo)

    if i == 0:
        text += f"{'Spot':>10s} {'Track':>10s} {'Quality':>10s} {'Combo':>10s} {'Fast':>10s}\n"

    text += f"{i+1:>10d} {ntrack:>10d} {nqual:>10d} {ncombo:>10d} {nfast:>10d}\n"

text += "="*60 + "\n"

text += f"{' Title2 ':=^60}\n"
for i in range(6):
    track   = ~flags[f'las{i+5}_trackf'].astype(bool)
    qual    = flags[f'las{i+5}_qualf'].astype(bool)
    combo   = np.logical_or(track,qual)
    fast    = out_arr[:,i]

    nfast   = np.sum(fast)
    ntrack  = np.sum(track)
    nqual   = np.sum(qual)
    ncombo  = np.sum(combo)

    if i == 0:
        text += f"{'Spot':>10s} {'Track':>10s} {'Quality':>10s} {'Combo':>10s} {'Fast':>10s}\n"

    text += f"{i+1:>10d} {ntrack:>10d} {nqual:>10d} {ncombo:>10d} {nfast:>10d}\n"

text += "="*60 + "\n"

然后,为了在HTML中使用<br>来代替\n,我执行了text.replace("\n","<br>"),并像这样包装这个text

html = """<pre><font face='monospace'>""" + text + """</font></pre>"""

有人能解释一下为什么会出现这个多余的空行吗?我是在HTML语法上做错了什么,还是在把\n替换成<br>时用了太多的换行元素?

1 个回答

暂无回答

撰写回答