2014-09-24 81 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