在Python中使用IMAPClient来获取电子邮件 - 需要将数据存储在列表中

时间:2017-01-02 16:34:33

标签: php python email dictionary imapclient

祝大家新年快乐:)

我构建了一个Web表单,新员工输入他们的数据并将其发送到一个电子邮件地址,我收到来自PHP的大约20个“数据集”。

Vorname: $firstname  
Nachname: $lastname

等等。

现在,当我使用IMAPClient获取带有python的电子邮件时,我删除了主要消息之前和之后的MIME字符,并留下了以下字符串集:

"\r\nNachname: Doe\r\nVorname: John\r\nStraße: Bahnhofstraße 3a\r\nPLZ: 67346\r\nOrt: Speyer\r\nGeschlecht: maennlich\r\nGeburtsdatum: 10.07.1983\r\nGeburtsname: \r\nGeburtsort: Speyer\r\nFamilienstand: ledig\r\nNationalität: deutsch\r\nKonfession: katholisch\r\nTelefon_1: 017666666666\r\nTelefon_2: \r\nHandy: \r\nE-Mail: mail@mail.com\r\nFax: \r\nQualifikation: hwfach\r\nAbschluss: fachhauswirtsch\r\nAufmerksam_durch: pdienstleist, zeitung\r\n"

我尝试.replace("\r","")\n,但关键和值似乎已关闭。

想知道你们会如何解决这个问题?

我有一个带有代码内字典的工作脚本 - 所以现在唯一缺少的是从电子邮件中摘录字典的方法。

希望有人可以帮助我。

干杯

1 个答案:

答案 0 :(得分:1)

好吧,如果您的目标是将此字符串转换为字典,则可以执行以下操作:

首先将其拆分为\r\n(其中x为字符串)

k_vs = x.split("\r\n")

现在,您可以使用dict理解来创建字典

_dct = {i.split(":")[0].strip():i.split(":")[1].strip() for i in k_vs if i}

如果你想要更详细,for循环会做同样的事情:

_dct = {}
for i in k_vs:
    if i:
        key, value = i.split(":")
        _dct.update({key: value})

样本:

>>> x = "\r\nNachname: Doe\r\nVorname: John\r\nStraße: Bahnhofstraße 3a\r\nPLZ: 67346\r\nOrt: Speyer\r\nGeschlecht: maennlich\r\nGeburtsdatum: 10.07.1983\r\nGeburtsname: \r\nGeburtsort: Speyer\r\nFamilienstand: ledig\r\nNationalität: deutsch\r\nKonfession: katholisch\r\nTelefon_1: 017666666666\r\nTelefon_2: \r\nHandy: \r\nE-Mail: mail@mail.com\r\nFax: \r\nQualifikation: hwfach\r\nAbschluss: fachhauswirtsch\r\nAufmerksam_durch: pdienstleist, zeitung\r\n"
>>> 
>>> y = x.split("\r\n")
>>> z = {i.split(":")[0].strip():i.split(":")[1].strip() for i in y if i}
>>> z
{'Geburtsdatum': '10.07.1983', 'Familienstand': 'ledig', 'Konfession': 'katholisch', 'Aufmerksam_durch': 'pdienstleist, zeitung', 'Ort': 'Speyer', 'Telefon_2': '', 'Vorname': 'John', 'PLZ': '67346', 'Geburtsname': '', 'Nationalit\xc3\xa4t': 'deutsch', 'E-Mail': 'mail@mail.com', 'Nachname': 'Doe', 'Telefon_1': '017666666666', 'Qualifikation': 'hwfach', 'Geburtsort': 'Speyer', 'Geschlecht': 'maennlich', 'Abschluss': 'fachhauswirtsch', 'Handy': '', 'Stra\xc3\x9fe': 'Bahnhofstra\xc3\x9fe 3a', 'Fax': ''}
>>>