如何利用python提取文本内标题下的内容?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何利用python提取文本内标题下的内容?相关的知识,希望对你有一定的参考价值。

比如有test.txt

内容是:

123=1

111
222
333
123=2
147
258
123=3
100
200
300
怎么用Python提取到标题下方的内容写入到1.txt里面?其中123=1,123=2,123=3是标题

参考技术A with open('test.txt') as file:
all=file.readlines()
with open('1.txt','w') as newfile:
for i in all:
if not "=" in i:
newfile.write(i)

如何从pdf中提取特定标题下的文本?

【中文标题】如何从pdf中提取特定标题下的文本?【英文标题】:How to extract text under specific headings from a pdf? 【发布时间】:2018-06-14 21:53:44 【问题描述】:

我想使用 python 从 pdf 中提取特定标题下的文本。

例如,我有一个带有标题简介、摘要、内容的 pdf。我只需要提取标题“摘要”下的文本。

我该怎么做?

【问题讨论】:

因为我不喜欢用 python 处理 PDF,所以我无法给出答案;不过,对 PDF 有所了解,让我暗示一些困难:您的示例文件有两个文本列。但是,这不一定反映在内部 PDF 内容中。根据文档本身,很可能有解决该任务的方法;但是,要提供匹配的解决方案,最好提供有问题的 PDF。否则,人们可能会提出适用于类似文档但不适用于您的文档的解决方案。或者不提供解决方案,因为他们无法测试它是否匹配。 @Midhun 打开赏金可能是一个好主意,但即便如此,OP 的合作也需要,并且 Alfiya 没有在 Ankit 的回答下回复 usr2564301 的评论是否使用该评论中的提示答案是否解决问题。 你找到解决方案了吗? @user2999110 嘿,我能理解,正则表达式是唯一的解决方案。但是对于标题格式不可预测的 pdf,我找不到任何解决方案。在这种情况下,正则表达式将不起作用 【参考方案1】:

我发现使用正则表达式的最佳方法

regex = r"^\d+(?:\.\d+)* .*(?:\r?\n(?!\d+(?:\.\d+)* ).*)*"
print(re.findall(regex,samplestring, re.M))

【讨论】:

【参考方案2】:

Pdf 是非结构化文本,因此没有标签可以直接提取数据。因此,我们使用正则表达式从文本语料库中找到所需的信息。 使用以下代码提取原始页面文本。

import fitz
page = pdf_file.loadPage(0) # 0 represents the page number... upto n-1 pages...
dl = page.getDisplayList()
tp = dl.getTextPage()
tp_text=tp.extractText()
re.split('\n\d+.+[ \t][a-zA-Z].+\n',tp_text)

然后根据您的需要应用正则表达式...(这为我重新工作,但您可能需要也可能不需要更改它)

我正在给出一个详细的例子,这是如何工作的

re.findall('\n\d+.+[ \t][a-zA-Z].+\n',"some text\n1. heading 1\nparagraph 1\n1.2.3 Heading 2\nparapgraph 2")

输出:['\n1.标题 1\n', '\n1.2.3 标题 2\n']

您可以使用re.split 来拆分每个标题的文本并检索您想要的标题文本。

re.split('\n\d+.+[ \t][a-zA-Z].+\n',"some text\n1. heading 1\nparagraph 1\n1.2.3 Heading 2\nparapgraph 2")

输出:['some text', 'paragraph 1', 'parapgraph 2']

仅第 i 个标题将有 (i+1) 个标题文本。

【讨论】:

【参考方案3】:

这个场景正是我在我现在的公司中所做的。我们需要提取标题下的文本。我个人使用的是基于规则的系统,即在逐行阅读整个文档后使用正则表达式来识别所有编号的标题。获得标题后,我输入要为其查找相应段落的标题名称。此输入与预先存在的标题列表匹配,并使用通用句子编码器找到最接近的匹配项。之后,我只显示从该标题到下一个标题的所有内容。

【讨论】:

能否请您添加代码 sn-ps 并解释其步骤以便更好地理解?

以上是关于如何利用python提取文本内标题下的内容?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Python 3 提取文章站点的文本内容? [复制]

ASP提取html内指定内容

用python提取xml文件<text></text>标签内的文本内容

前端技巧教你如何选中元素内的所有文本内容

EXCEL VBA提取内容到指定位置

用于在 HTML 标记中提取特定文本内容的正则表达式