簡體   English   中英

使用正則表達式和Python從電子郵件中提取一些信息

[英]Extract some info from email using regular expression with Python

我需要解析elmx(Mac OS X電子郵件文件格式)的電子郵件文件,以使用Python使用正則表達式提取一些信息

電子郵件包含以下格式,前后都有很多文字。

...

Name and Address (multi line)

Delivery estimate: SOMEDATE

BOOKNAME
AUTHOR and PRICE

SELLER

...

示例如下。

...

Engineer1 
31500 N. Mopac Circle.
Company, Building A, 3K.A01
Dallas, TX 78759
United States

Delivery estimate: February 3, 2011

1 "Writing Compilers and Interpreters"
Ronald Mak; Paperback; $21.80

Sold by: Textbooksrus LLC

...

我如何解析電子郵件以提取它們? 我通常使用line = file.readline(); for line in lines line = file.readline(); for line in lines ,但在這種情況下,某些信息是多行的(例如地址)。

問題是這些信息只是大文件的一部分,因此我需要找到一種方法來檢測它們。

我認為您不需要正則表達式。 您可能可以使用讀取行來加載文件,然后使用string模塊中的startswith()方法遍歷尋找“交付估算:”的方法來進行此操作。 此時,您將擁有一個數據所在的行號。

您可以通過從行號向后掃描以找到用空白行分隔的文本塊來獲取地址。 尋找空白行時,請不要忘記使用strip()。

然后從投放估算行進行前向掃描以獲取其他信息。 也比正則表達式快得多。

data = file.read()會給你整個shabang,然后確保添加行尾並在需要的地方開始您的正則表達式。

您可以分割雙\\n\\n並從那里開始工作:

>>> s= """
... Engineer1 
... 31500 N. Mopac Circle.
... Company, Building A, 3K.A01
... Dallas, TX 78759
... United States
... 
... Delivery estimate: February 3, 2011
... 
... 1 "Writing Compilers and Interpreters"
... Ronald Mak; Paperback; $21.80
... 
... Sold by: Textbooksrus LLC
... """
>>> name, estimate, author_price, seller = s.split("\n\n")
>>> print name
Engineer1 
31500 N. Mopac Circle.
Company, Building A, 3K.A01
Dallas, TX 78759
United States

暫無
暫無

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

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