首页 > 解决方案 > 获取电子邮件问卷的正文并将答案提取到 .csv

问题描述

我可以登录我的电子邮件,在我的收件箱中搜索任何未读邮件,并打印未读邮件的正文,但我正在尝试将我的问卷答案写入 pandas 数据框。我收到问卷时的电子邮件示例:

name --- Brook Yohohoho ::: 
email --- deeew32@yahoo.com ::: 
mobile --- 123-458-9463  ::: 

总共有 24 个问题。

我检索电子邮件并尝试将其写入 csv 部分的代码是:

try:
    for num in data[0].split():
        typ, msg_data = conn.fetch(num, '(RFC822)')
        for response_part in msg_data:
            if isinstance(response_part, tuple):
                msg = email.message_from_string(response_part[1])
                subject=msg['subject']
                print(subject)
                payload=msg.get_payload()
                body=extract_body(payload)
                print(body)
                df = pd.DataFrame(eval(body), delimiter = '[,,,:::]', columns = ['name', 'email', 'mobile'])
                df.to_csv("questionnaire.csv", delimiter = ',')
                print(df)
        typ, response = conn.store(num, '+FLAGS', r'(\Seen)') 

我只想将问题的答案写到数据框。电子邮件的正文不会写入数据框,我收到错误:

Traceback (most recent call last):
 File "email3.py", line 27, in <module>
  df = pd.DataFrame(eval(body), delimiter = '[,,,:::]', columns = ['name', 'email', 'mobile'])
 File "<string>", line 1
  name --- Brook Yohohoho :::
                        ^
SyntaxError: invalid syntax

旁注**** 发送至此电子邮件地址的所有电子邮件都将作为调查问卷的答案。如有必要,可以更改发送电子邮件的格式。例如,电子邮件的每一行不是“名称 --- Brook Yohohoho :::”,而是可以更改为名称“Brook Yohohoho”等。

标签: pythonpandaspython-2.7emailimaplib

解决方案


推荐阅读