Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 正则表达式查找多行文本中包含句子的段落_Python_Regex_Pdftotext - Fatal编程技术网

Python 正则表达式查找多行文本中包含句子的段落

Python 正则表达式查找多行文本中包含句子的段落,python,regex,pdftotext,Python,Regex,Pdftotext,我有一个pdf提取文本,看起来像这样 ======================================== 标题 副标题 Lorem Ipsum只是印刷的虚拟文本 以及排版业。Lorem Ipsum已被删除 该行业自16世纪以来的标准虚拟文本 副标题 Lorem Ipsum只是印刷和印刷的虚拟文本 排版业。Lorem Ipsum一直是该行业的佼佼者 16世纪以来的标准虚拟文本 ======================================== 每行末尾都有一个新行('\

我有一个pdf提取文本,看起来像这样

========================================

标题

副标题

Lorem Ipsum只是印刷的虚拟文本

以及排版业。Lorem Ipsum已被删除

该行业自16世纪以来的标准虚拟文本

副标题

Lorem Ipsum只是印刷和印刷的虚拟文本

排版业。Lorem Ipsum一直是该行业的佼佼者

16世纪以来的标准虚拟文本

========================================

每行末尾都有一个新行('\n')

我试图用正则表达式找到一个给定的句子,并提取找到它的段落。段落是两个连续新行(\n\n)之间的任何内容。请注意,它必须使用lazy方法来完成

供参考:

  • 这个句子可以以一行开头,以另一行结尾

  • 我无法更改给定的文本格式

  • 要返回的行数是有限的,因此如果在向上或向下10行之后找不到\n\n,则必须在regex关键字之前返回10行,之后返回10行


  • 像这样的事情可能会让你开始:

    import re
    
    data = """
    ggg
    
    aaa aaa aaa
    more bla...
    
    ========================================
    
    TITLE
    
    subtitle
    
    Lorem Ipsum is simply dummy text of the printing
    
    and typesetting industry. Lorem Ipsum has been
    
    the industry's standard dummy text ever since the 1500s.
    
    subtitle
    
    Lorem Ipsum is simply more bla of the printing and
    
    typesetting industry. Lorem Ipsum has been the industry's
    
    standard dummy text ever since the 1500s.
    
    ========================================
    
    bla bla bla bla bla
    more bla...
    
    yet more bla
    """
    
    if __name__ == "__main__":
        to_search = "more bla"
        print(re.findall(r"(?:(?<!^\n)\n(?!^\n)|[^\n])*"+re.escape(to_search)+r"(?:(?<!^\n)\n(?!^\n)|[^\n])*", data, re.DOTALL|re.MULTILINE|re.IGNORECASE))
    
    重新导入
    data=”“”
    ggg
    aaa aaa aaa
    更多的废话。。。
    ========================================
    标题
    字幕
    Lorem Ipsum只是印刷的虚拟文本
    和排版行业。Lorem Ipsum已经
    该行业自16世纪以来的标准虚拟文本。
    字幕
    Lorem Ipsum只是简单地说更像是印刷和印刷的bla
    排版行业。Lorem Ipsum一直是该行业的佼佼者
    16世纪以来的标准虚拟文本。
    ========================================
    呜呜呜呜呜呜呜呜
    更多的废话。。。
    还有更多的废话
    """
    如果名称=“\uuuuu main\uuuuuuuu”:
    to_search=“更多bla”
    
    print(关于findall(r)(?:(?类似的内容可能会让您开始:

    import re
    
    data = """
    ggg
    
    aaa aaa aaa
    more bla...
    
    ========================================
    
    TITLE
    
    subtitle
    
    Lorem Ipsum is simply dummy text of the printing
    
    and typesetting industry. Lorem Ipsum has been
    
    the industry's standard dummy text ever since the 1500s.
    
    subtitle
    
    Lorem Ipsum is simply more bla of the printing and
    
    typesetting industry. Lorem Ipsum has been the industry's
    
    standard dummy text ever since the 1500s.
    
    ========================================
    
    bla bla bla bla bla
    more bla...
    
    yet more bla
    """
    
    if __name__ == "__main__":
        to_search = "more bla"
        print(re.findall(r"(?:(?<!^\n)\n(?!^\n)|[^\n])*"+re.escape(to_search)+r"(?:(?<!^\n)\n(?!^\n)|[^\n])*", data, re.DOTALL|re.MULTILINE|re.IGNORECASE))
    
    重新导入
    data=”“”
    ggg
    aaa aaa aaa
    更多的废话。。。
    ========================================
    标题
    字幕
    Lorem Ipsum只是印刷的虚拟文本
    和排版行业。Lorem Ipsum已经
    该行业自16世纪以来的标准虚拟文本。
    字幕
    Lorem Ipsum只是简单地说更像是印刷和印刷的bla
    排版行业。Lorem Ipsum一直是该行业的佼佼者
    16世纪以来的标准虚拟文本。
    ========================================
    呜呜呜呜呜呜呜呜
    更多的废话。。。
    还有更多的废话
    """
    如果名称=“\uuuuu main\uuuuuuuu”:
    to_search=“更多bla”
    
    打印(关于findall(r)(?):(?为什么你需要使用正则表达式?这听起来不像是正则表达式问题。请详细说明你所说的懒惰方法是什么意思。这听起来像家庭作业/作业-是吗?你写了什么代码?这实际上是我正在进行的一项自动化工作。我有一个机器人,可以提取pdf文件的页面,然后解析为字符串。之后,我必须完成在我解析的文本中添加一个句子,并返回包含该句子的段落。我想到的是:首先找到包含我的句子的行,然后在上面和下面添加行,直到找到一个空行(仅a\n)因此,我必须使用正则表达式来查找文本中的句子。其中一个问题是我的句子可以从一行开始到另一行结束,因此我无法逐行搜索,它必须比这更复杂。为什么你需要使用正则表达式?这听起来不像正则表达式问题。请详细说明你所说的懒惰方法是什么意思d、 这听起来像是家庭作业/作业-是吗?你写了什么代码?这实际上是我在做的一个自动化工作。我有一个机器人,它可以提取pdf文件的页面,然后解析成字符串。然后,我必须在解析的文本中找到一个句子,并返回包含这个句子的段落。我想到的是:我第一个我找不到包含我的句子的行,然后在上面和下面添加行,直到我找到一个空行(只有a\n),因此,我必须使用正则表达式来查找文本中的句子。其中一个问题是我的句子可以在一行开始,在另一行结束,因此我无法逐行搜索,它肯定比这更复杂