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

Extract only the title of an article from a TXT file in Python

非常感谢您对以下问题的指导。我只需要从一系列出版物中批量提取文章标题。我的想法是我收到 PDF 格式的文件,我只提取第一页(完成),批量转换为 TXT(完成),我被困在最后一个阶段。

TXT的结构如下:

--- 医学与生命杂志

JML |评论

新型聚 (ADP-ribose) 抑制剂在治疗具有遗传性胚系 BRCA1/2 突变的局部晚期和转移性 Her-2/neu 阴性乳腺癌中的作用。 文献回顾

作者名单等等---

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

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

    data = file.read()
    array1 = []
    sp = data.split("\n\n")
    for number, paragraph in enumerate(sp, 1):
        if number == 1:
            array1 += [paragraph]
            print (array1)

没有任何结果...

我的想法是我只需要将标题保存在一个文件(可以是 TXT)中,因为我需要这个列表用于其他目的。

非常感谢!

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

^JML\s*\|.*\s*\r?\n((?:.*\r?\n)*?)Authors\b

模式匹配:

  • ^ 字符串开头
  • JML\s*\| 匹配 JML、可选的空白字符和 |
  • .*\s*\r?\n 匹配行的其余部分,可选的空白字符和换行符
  • ( 捕获组 1
    • (?:.*\r?\n)*?尽可能少地匹配所有行
  • ) 关闭组 1
  • Authors\b 作者

Regex demo

例如:

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)