簡體   English   中英

yagmail在pandas DataFrame生成html之前添加額外的換行符

[英]yagmail adding extra line breaks before pandas DataFrame generated html

我正在嘗試使用本文詳述的方法發送包含pandas DataFrame的yagmail電子郵件: HTML格式的mimelib Python電子郵件

但是,無論我嘗試什么,yagmail都會在打印DataFrame之前添加一長串換行符。

我的代碼是(我只更改了安裝的電子郵件地址):

#--- Addition to original post ---
import pandas as pd
df = pd.DataFrame([[900, 20.0], [500, 21.0]], columns =['Quantity', 'Price'])
#--- Addition to original post ---

import time
import yagmail
yag = yagmail.SMTP(username, password)

text = "Hi!\nHow are you?\nHere is the link you wanted:\nhttps://www.python.org"
html = df.to_html()

yag.send('albalb@gmail.com', "This a reminder call " + time.strftime("%c"), [text,html])

生成的電子郵件正文是:

>Hi!
>How are you?
>Here is the link you wanted:
>https://www.python.org
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>   Quantity    Price
>0  900     20.0
>1  500     21.0

我也嘗試添加一個DOCTYPE標簽,編碼為u​​tf-8,從unicode轉換為字符串,但我沒有成功。

這是一個錯誤,還是任何人都可以幫我解決問題?

編輯#1:請注意,html變量包含以下內容:

<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>Quantity</th>
      <th>Price</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>900</td>
      <td>20.0</td>
    </tr>
    <tr>
      <th>1</th>
      <td>500</td>
      <td>21.0</td>
    </tr>
  </tbody>
</table>

編輯#2:為了詳細說明我嘗試添加html和doctype標簽,我嘗試在html的開頭和結尾添加以下內容。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
  <title>Title</title>
</head>
<body>
...
</body>
</html>

在這里驗證了這是有效的HTML 並且生成的電子郵件正文類似。

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

























    Quantity    Price
0   900     20.0
1   500     21.0

評論太長:您可以做的一件事是在發送和手動刪除空格之前創建輸出的變量。 例如,在我過去構建的一個電子郵件程序中,我使用了easygui並使用textbox為用戶創建了他們的消息。 然后發送該消息。 我的小例子:

import easygui as e
text_mes= e.textbox("Add to the Email", "Create Your Email", html)
yag.send('albalb@gmail.com', "This a reminder call " + time.strftime("%c"), [text,text_mes])

這將允許您手動刪除行,直到您可以找到一種方法來創建一些代碼來擺脫空格。

暫無
暫無

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

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