Ich habe diese Daten aus dem E-Mail-Text extrahiert

Data=("""-------- Forwarded Message --------          

Subject:    Sample Report

Date:   Thu, 6 Apr 2017 16:39:19 +0000

From:   test1@abc.com

To:     test2@xyz.com""")

Ich möchte dieses bestimmte Datum und diesen bestimmten Monat extrahieren und in die Variablen kopieren

Benötigen Sie Ausgabe als

Date = 6

Month = "Apr"

Kann mir bitte jemand dabei helfen, reguläre Ausdrücke zu verwenden?

0
IamBatman 18 Apr. 2018 im 15:48

3 Antworten

Beste Antwort

Sie können diesen regulären Ausdruck im mehrzeiligen Modus m verwenden:

^Date:[^,]+,\ (\d+) (\w+)

Dadurch werden das Datum und der Monat in den Gruppen 1 bzw. 2 erfasst, sodass die Übereinstimmung leicht in zwei Variablen wie folgt entpackt werden kann:

date, month = re.search("^Date:[^,]+,\ (\d+) (\w+)", Data, re.MULTILINE).groups()
date = int(date)

print(date, month)
# output: 6 Apr
0
Aran-Fey 18 Apr. 2018 im 13:04

Sie können Regex verwenden, um das Datum zu extrahieren

Beispiel:

import re
from dateutil.parser import parse

s = """-------- Forwarded Message --------

Subject:    Sample Report

Date:   Thu, 6 Apr 2017 16:39:19 +0000

From:   test1@abc.com

To:     test2@xyz.com"""

date = re.search("Date(.*)$", s, re.MULTILINE)
if date:
    date = date.group().replace("Date:", "").strip()
    d = parse(date)
    Date = d.day
    Month = d.strftime("%b")
print(Date, Month)

Ausgabe:

6 Apr
0
Rakesh 18 Apr. 2018 im 13:16

Hinzufügen zur Lösung von @Rakesh,

import re
from datetime import datetime

data1 = re.sub(' ', '', data)
res = re.search(r'Date(.*)$', data1, re.MULTILINE).group()
res2 = datetime.strptime(res, 'Date:%a,%d%b%Y%X%z')
print(res2.day, res2.month)
0
BcK 18 Apr. 2018 im 13:05