我的代碼非常接近成功,但我只需要一點幫助。如何在不包含周圍文本的情況下解析精確數據?
我有100頁的數據,但我正在解析只有1頁完美,然後才應用到其他人。在這一頁,這是一封電子郵件,我需要提取幾件事情:日期,部門,魚種,磅和金錢。到目前爲止,我已經成功地使用RegularExpressions來識別某些單詞並從該行中提取數據:例如查找「已發送」,因爲我知道日期信息將始終跟着該單詞,並且查找「磅」或「磅」因爲磅信息將永遠在此之前。
我遇到的問題是我的代碼抓住了數據所在的整行,而不僅僅是數字數據。例如,我想抓住磅的數字值,但我意識到這將是非常困難的,因爲100個電子郵件中的每一個都有不同的措辭。我不確定是否甚至有可能使此代碼萬無一失,因爲我需要RegEx識別數據周圍的文本,但不會將其包含在我的導出命令中。那麼,我是否會盲目地抓住某些被認可的單詞後的角色?
這是用於提取英鎊數據一塊我的代碼:
for filename in os.listdir(path):
file_path = os.path.join(path, filename)
if os.path.isfile(file_path):
with open(file_path, 'r') as f:
sector_result = []
pattern = re.compile("Pounds | lbs", re.IGNORECASE)
for linenum, line in enumerate(f):
if pattern.search(line) != None:
sector_result.append((linenum, line.rstrip('\n')))
for linenum, line in sector_result:
print ("Pounds:", line)
而且這裏是它打印出:
Pounds: -GOM Cod up to 5,000 lbs (live wt) @ 1.40 lbs
Pounds: -GOM Cod up to 5,000 lbs (live wt) @ 1.40 lbs
Pounds: -American Plaice 2,000 lbs .60 lbs or best offer
理想我只是想在5000磅數值被出口,但我不知道我會如何去抓住這個數字。
這裏是我需要解析原始電子郵件文本:
From:
Sent: Friday, November 15, 2013 2:43pm
To:
Subject: NEFS 11 fish for lease
Greetings,
NEFS 11 has the following fish for lease:
-GOM Cod up to 5,000 lbs (live wt) @ 1.40 lbs
-American Plaice 2,000 lbs .60 lbs or best offer
這裏是另一個單獨的電子郵件儘管這將需要進行解析;這就是爲什麼寫這個代碼是困難的,因爲它也必須處理各種不同的措詞電子郵件,因爲它們都通過不同的人寫的:
From:
Sent: Monday, December 09, 2013 1:13pm
To:
Subject: NEFS 6 Stocks for lease October 28 2013
Hi All,
The following is available from NEFS VI:
4,000 lbs. GBE COD (live wt)
10,000 lbs. SNE Winter Flounder
10,000 lbs. SNE Yellowtail
10,000 lbs GB Winter Flounder
Will lease for cash or trade for GOM YT, GOM Cod, Dabs, Grey sole stocks on equitable basis.
Please forward all offers.
Thank you,
任何和所有幫助表示讚賞,因爲以及提出批評的問題。謝謝。
請提供您嘗試解析的源數據的示例或代碼片段。 – Keozon
我已添加原始電子郵件。使整個項目變得困難的原因是,每封電子郵件都不會是這樣,因爲它們都是由不同的人寫的。 – Stephen