2014-09-24 51 views
1

對不起,要問一個初學者的問題,但我完全陷入困境,我非常希望有人能幫助我。在python中搜索目標

我有一個大的文檔文件,我想保留部分,我想擺脫位。我想保留的所有部分都以「編輯器:」開頭,但它們由多個段落組成(不是一個一致的數字,只有第一個段落開始於「編輯器:」)。

我想丟棄的作品有一個首字母爲「LEAD」的段落,並且可能有幾段長。

我想用一種方式來使用python來瀏覽文檔,當它找到一個「LEAD」的實例時,跳到下一個「To the Editor:」的實例,但到目前爲止我還沒有管理任何東西不僅僅是提取我想要的第一個文本。

在情況下,它可以幫助所有,它是與此代碼(除我縮進得當,誠實):

for line in file_to_use: 
    if re.search ("LEAD", line): 
     break 
    else: 
     print line 

當然,這只是掉出來,當它到達的第一個實例循環的,但「鉛」。有沒有辦法讓它搜索下一個目標(「到編輯器:」),並從那裏重複這個過程?

非常感謝您的幫助。

編輯:

感謝您編輯我原來的職位!

下面是該文件的一個例子:

01.tgz:

致編輯:我奇西克先生同意爲有利於移民誰最有可能取得成效的申請人的移民政策的必要性美國社會成員。不過,我認爲奇西克先生在將申請人的教育水平與他的可能生產率相等時會犯錯。我懷疑可以確定,外籍工人的教育水平可能與他的生產率超過最低水平相關。

01.tgz:

例如,我們在墨西哥工人在墨西哥邦內製造和裝配工業生產和裝配行業的經驗是,那些接受六年級教育的工人的平均工資比生產率高10%到25%而不是美國工人(他們大概受過更好的教育)來完成同樣的任務。相反,許多國家的大學或大學教育似乎與有用的生產技能幾乎相反。 ALLEN E. SMITH Allen E. Smith &聯營公司Maquiladora行業顧問麥卡倫,德克薩斯州,12月29日CORPORATE POWER,CONT。主持人:緬因州一個頗受歡迎的地區法官由於他嚴肅對待醉酒司機和少年犯的政策,在兩年內面臨第二次不當行爲指控。主持人:緬因州一個頗受歡迎的地區法官由於他嚴肅對待醉酒司機和少年犯的政策,在兩年內面臨第二次不當行爲指控。

01.tgz:

紐約州最高法院在過去八年中發現三名緬因州法官犯了不當行爲,但Benoit先生是唯一兩次前往法庭審判的法官。

01.tgz:

「我們對他們對他做的事情感到憤怒,」瓊安帕特森說,她和丈夫一起在法明頓經營獸醫業務。''任何試圖做不同事情的東西,做出更好的事情,都會得到更好的結果。''支持展示的絲帶

01.tgz:

在聖誕節假期,帕特森太太遞出了5,200條紅絲帶,在車上展示對Benoit法官的支持。帕特森太太說:「有一位女士告訴我,七年前法官伯努瓦通過給他一個嚴厲的判決挽救了她丈夫的生命。」 ''大多數人都非常支持他在做什麼。''

+0

你有一個輸入/輸出的例子嗎?我不清楚你想要什麼。 – 2014-09-24 14:18:31

+0

感謝您對它進行編輯。 – user3925296 2014-09-24 14:19:12

+0

我想你想繼續循環。然後,使用'continue'而不是'break' – han058 2014-09-24 14:19:55

回答

0

這樣做的一種方法可能是當代碼看到「主角」時「關閉」輸出,並在看到它時切換回來「到了編輯:」

lead = False 

for line in file_to_use: 
    if re.search ("LEAD", line): 
     lead = True 
    if re.search ("To the Editor:", line): 
     lead = False 

    if lead == False: 
     print line 
+0

這可行!你太棒了。非常感謝。 – user3925296 2014-09-24 14:31:57

0

如果我理解的目標,儘量多行正則表達式:

re.findall(r'^(?:To the Editor:)(.*?)(?=^LEAD:)', txt, re.S | re.M) 

Live Demo

+0

非常感謝!我也會試試這個! – user3925296 2014-09-24 15:00:41