当前位置: 首页 > 面试题库 >

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

松增
2023-03-14
问题内容

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

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()

有任何想法吗?


问题答案:

您可以使用简化这一个正则表达式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对的非重叠块。



 类似资料:
  • 问题内容: 可以说我有一个包含以下内容的文本文件 现在,我需要编写一个Python代码,该代码将读取文本文件并将内容在“开始”和“结束”之间复制到另一个文件。 我写了下面的代码。 我没有获得预期的期望输出,只是开始了。我想要得到的是开始和结束之间的所有界限。不包括开始和结束。 问题答案: 万一您的文本文件中有多个“开始”和“结束”,这会将所有数据一起导入,不包括所有“开始”和“结束”。

  • 问题内容: 我有一个像 “ ABC [这是为了提取]” 我想提取Java中的部分。我正在尝试使用split,但是它不能按我想要的方式工作。有人有建议吗? 问题答案: 如果您的字符串中只有一对方括号(),则可以使用:

  • 问题内容: 我需要从一个巨大的文件中提取两个匹配模式之间的特定行。 假设(文件中唯一)匹配特定内容, (文件中不唯一)匹配之后的下一个立即匹配项。然后我要提取之间的所有行,包括 样本文件内容 期望的输出 如果您能帮助我解决这个问题,将不胜感激 问题答案: 这可以是一种方法: 找到时,则使变量p = 1。 它仅在时打印行。这是通过条件完成的。如果为true,它将执行默认的awk操作,即。否则,事实并

  • 我有下面的html片段,只需要从中间提取文本 Html块看起来像: 因此,所需的输出应该类似于File1、File2、File3。 这就是我迄今为止所尝试的 但没有按预期工作。 有什么简单的解决方案可以在python中指定的html标记块之间提取文本吗?

  • 我正在尝试读取 xml 文件中 2 个 html 标签之间的文本。它适用于小内容,但是当内容很大时,它会失败并返回空。在高级别上可能是什么问题

  • 问题内容: 我有绳子。我想在组织名称之后(在两个“ ..”字符之后)和管道字符之前获取子字符串。因此,输出字符串应为- 。你能帮忙吗? 我一直在尝试形成这样的正则表达式,但似乎没有用。 问题答案: 您可以使用它。 编辑: 这将恰好匹配两个点,后跟一个或多个字符,直到字符串末尾为止。