从 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
作者
例如:
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)
非常感谢您对以下问题的指导。我只需要从一系列出版物中批量提取文章标题。我的想法是我收到 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)*?
尽可能少地匹配所有行
)
关闭组 1Authors\b
作者
例如:
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)