Извлечь некоторую информацию из электронной почты, используя регулярное выражение с Python - PullRequest
1 голос
/ 04 февраля 2011

Мне нужно проанализировать файл электронной почты в 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, но в этом случае некоторая информация является многострочной (например, адрес).

Дело в том, что эта информация является лишь частью большого файла, поэтому мне нужно найти способ их обнаружить.

Ответы [ 3 ]

1 голос
/ 04 февраля 2011

Не думаю, что вам нужны регулярные выражения.Возможно, вы могли бы сделать это, используя readlines для загрузки файла, а затем выполнить итерацию по поиску «Delivery Delivery:» с помощью метода startwith () в строковом модуле.В этот момент у вас есть номер строки, в которой находятся данные.

Вы можете получить адрес, отсканировав от номера строки в обратном направлении, чтобы найти блок текста, разделенный пустыми строками.Не забывайте использовать strip () при поиске пустых строк.

Затем выполните сканирование вперед от строки оценки доставки, чтобы получить другую информацию.Гораздо быстрее, чем регулярные выражения.

0 голосов
/ 04 февраля 2011

Вы можете разделить на двойной \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
0 голосов
/ 04 февраля 2011

Do data = file.read(), который даст вам весь шабанг, а затем обязательно добавьте концы строк и начните с вашего регулярного выражения, где это необходимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...