如何利用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是标题
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 提取文章站点的文本内容? [复制]