微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

重复提取文本文件Python中两个定界符之间的行

如何解决重复提取文本文件Python中两个定界符之间的行

您可以使用简化这一个正则表达式re.S中,DOTALL标志

import re
def GetTheSentences(infile):
     with open(infile) as fp:
         for result in re.findall('DELIMITER1(.*?)DELIMITER2', fp.read(), re.S):
             print result
# extract me
# extract me
# extract me

这也利用了非贪婪运算符.*?,因此将找到多个DELIMITER1-DELIMITER2对的非重叠块。

解决方法

我有以下格式的文本文件:

DELIMITER1
extract me
extract me
extract me
DELIMITER2

我想提取extract me.txt文件中DELIMITER1和DELIMITER2之间的每个s块

这是我当前的无效代码:

import re
def GetTheSentences(file):
     fileContents =  open(file)
     start_rx = re.compile('DELIMITER')
     end_rx = re.compile('DELIMITER2')

     line_iterator = iter(fileContents)
     start = False
     for line in line_iterator:
           if re.findall(start_rx,line):

                start = True
                break
      while start:
           next_line = next(line_iterator)
           if re.findall(end_rx,next_line):
                break

           print next_line

           continue
      line_iterator.next()

有任何想法吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。