首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅从Python中的TXT文件中提取文章的标题

仅从Python中的TXT文件中提取文章的标题
EN

Stack Overflow用户
提问于 2021-03-18 13:25:22
回答 1查看 968关注 0票数 0

我希望你能在以下问题上提供指导。我只需要大量从一系列出版物中提取文章标题。我的想法是,我收到PDF文件,我只提取第一页(完成),批量转换为TXT (完成),我被困在最后一个阶段。

这些TXTs的结构如下:

--医学与生命杂志

JML审查

:新型聚(ADP-核糖)抑制剂在局部晚期转移性Her-2/neu阴性乳腺癌治疗中的作用。文献综述

作者名单等.

只需要标题(粗体),来自每个文件。我可以做迭代,这不是问题。

使用下面的代码,我试图识别第1段:

代码语言:javascript
复制
    data = file.read()
    array1 = []
    sp = data.split("\n\n")
    for number, paragraph in enumerate(sp, 1):
        if number == 1:
            array1 += [paragraph]
            print (array1)

没有任何结果..。

我的想法是,我只需要保存在一个文件中的标题(可能是TXT),因为我需要这个列表的另一个用途。

非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-18 19:07:07

您可以使用.read()读取整个文件,并使用捕获组的模式来匹配JML到Authors。

代码语言:javascript
复制
^JML\s*\|.*\s*\r?\n((?:.*\r?\n)*?)Authors\b

模式匹配:

  • 字符串的^开始
  • JML\s*\|匹配JML,可选空格字符和|
  • .*\s*\r?\n匹配行的其余部分、可选空格字符和换行符。
  • (捕获组1
    • (?:.*\r?\n)*?尽可能至少匹配所有行

  • )闭组1
  • Authors\b作者

Regex演示

例如:

代码语言:javascript
复制
import os
import re

pattern = r"^JML\s*\|.*\s*\r?\n((?:.*\r?\n)*?)Authors\b"
array1 = []

for file in os.listdir():
    with open(file, "r") as data:
        array1 = array1 + re.findall(pattern, data.read(), re.MULTILINE)
print(array1)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66692051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档