die ersten 3 zeilen eines Strings löschen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
friesi
User
Beiträge: 5
Registriert: Donnerstag 9. September 2004, 17:52

die ersten 3 zeilen eines Strings löschen

Beitragvon friesi » Donnerstag 9. September 2004, 18:01

Hallo.

Bin neu hier im Forum und grüße gleich mal alle :)

Ich schreibe momentan an einem Python Script, welches von einem Linux Server Emails zugeschickt bekommt und in der Email sind mehrere Emails angehangen, nun soll das Script diese eine Email lesen und die angehängten Nachrichten rausfiltern und dem SpamAssassin als Emailvorlage übergeben um spätere Emails mit dieser Vorlage dann zu vergleichen und als Spam auszusortieren.

Soweit so gut, ich packe also nun in einer Email alle Spammails rein und schicke diese an die Adresse, die die Mails an das python Script leitet. Nun nimmt das Script die Email auseinander uns sucht nach dem String:
"Content-Type: message/rfc822".

Nun zu meinem Problem.
Im Output steht dann z.b. dieses:

Code: Alles auswählen

From nobody Thu Sep  9 18:43:16 2004
Content-Type: message/rfc822
Content-Transfer-Encoding: 7bit

X-MimeOLE: Produced By Microsoft Exchange V6.5.6944.0
Received: by xxx.xxx.de
        id <01C4xxxxxx7@xxx.xxx.de>;
        Thu, 9 Sep 2004 09:46:23 +0200
MIME-Version: 1.0
Content-Type: multipart/alternative;
        boundary="----_=_NextPart_003_01C49641.1A4BF8A7"
Content-class: urn:content-classes:message
Subject: mail2
Date: Thu, 9 Sep 2004 09:46:23 +0200
(.....)


Nun stören aber die ersten drei Zeilen

Code: Alles auswählen

From nobody Thu Sep  9 18:43:16 2004
Content-Type: message/rfc822
Content-Transfer-Encoding: 7bit


Bevor das Python Script diesen String als Datei abspeichert steht alles in einer Variable mit dem Namen "str".

Wie kann ich nun in der VAR str die ersten drei Zeilen des Strings entfernen?

Sorry programmiere noch nicht lange mit Python und bin froh, das ich schon soweit gekommen bin, doch nun komme ich bei einem wohl total leichten Problem nicht weiter.

Hoffe mir kann man hier helfen :)

Gruß
Friesi
Benutzeravatar
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

Beitragvon hans » Donnerstag 9. September 2004, 18:54

Die Zeilen sind im String durch \n (Cariage Return) getrennt. Das kannst du mit der Funktion split() auseiandernehmen.

splitlines() geht vielleicht auch.

Hans
Benutzeravatar
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Beitragvon Dookie » Donnerstag 9. September 2004, 19:22

Hi friesi,

erstmal nenne die Variable anders, str ist der eingebaute Typ für Strings!
Wie Hans schon sagt, musst Du erst deinen Emailstring zerlegen und dann kannst Du ihn ohne die ersten Zeilen wieder zusammenfügen. Liest sich wilder als es ist.

Beispiel:

Code: Alles auswählen

zeilen = emailstr.splitlines(True) # in Zeilen zerlegen
newstr = "".join(zeilen[3:]) # ab der 4. Zeilen  verbinden


Gruß

Dookie

Code: Alles auswählen

#!/usr/bin/env python
import this
friesi
User
Beiträge: 5
Registriert: Donnerstag 9. September 2004, 17:52

Beitragvon friesi » Donnerstag 9. September 2004, 19:39

Ahh vielen lieben Dank :)

Nun geht es. Ist echt viel einfacher als man glaubt :)

Nur da erstmal drauf kommen 8)
Benutzeravatar
fs111
User
Beiträge: 170
Registriert: Samstag 15. November 2003, 11:42
Kontaktdaten:

Beitragvon fs111 » Freitag 10. September 2004, 09:04

Warum willst Du das denn alleszu Fuß machen, wenn es doch schon fertige E-Mail-Module gibt, mit denen sowas leicht zu machen ist?

fs111
Pydoc-Integration in vim - Feedback willkommen: http://www.vim.org/scripts/script.php?script_id=910
friesi
User
Beiträge: 5
Registriert: Donnerstag 9. September 2004, 17:52

Beitragvon friesi » Freitag 10. September 2004, 09:49

Also ich hab noch kein Modul gefunden, welches das kann.

So kann ich im Outlook/Evolution einfach die ganzen Spammails in den Anhang einer Email packen, diese an z.b.: spam@domain.tld senden, die über einen alias in der /etc/aliases an das pytonscript geleitet wird, dieser entpackt die angehängten Mails und sendet sie an den "sa-learn --spam".

Falls es echt so ein Modul gibt, dann hab ich es nun umsonst fast fertig ;)
Benutzeravatar
fs111
User
Beiträge: 170
Registriert: Samstag 15. November 2003, 11:42
Kontaktdaten:

Beitragvon fs111 » Freitag 10. September 2004, 10:36

Nein, für Dein Gesamtproblem gibt es keine fertige Lösung, aber für die Arbeit mit emails gibt es z.B. das hier: http://python.org/doc/current/lib/module-email.html

fs111
Pydoc-Integration in vim - Feedback willkommen: http://www.vim.org/scripts/script.php?script_id=910
friesi
User
Beiträge: 5
Registriert: Donnerstag 9. September 2004, 17:52

Beitragvon friesi » Freitag 10. September 2004, 11:35

Das benutze ich ja auch :)

Wer ist online?

Mitglieder in diesem Forum: Google [Bot]