我正试图找到一种方法,将我已经提取的文本分成两个变量。我在科学文本中使用了这一点,我想把文章的摘要和其余部分提取出来,例如结论引言分为两部分,所以是抽象的和其余部分
我该怎么做?我尝试过regex,但无法使其工作。下面你可以看到我使用过的一些代码。
with pdfplumber.open("") as pdf:
all_text = '' # new line
for pdf_page in pdf.pages:
single_page_text = pdf_page.extract_text()
#print( single_page_text )
all_texts = all_text + 'n' + single_page_text
#print(all_text)
我假设抽象是由字符串"摘要";以及"*信件";。我使用str.split((创建一个列表,其中包含"之前和之后的文本;摘要";。我拆分列表的第二个元素,创建一个包含"之前的文本的列表*信件";以及"0"之后的文本*信件";。第二个列表的第一个元素是摘要。我把除抽象外的所有内容都附加到另一个变量中。由于摘要包含在第一页上,因此仅适用于第一页。使用enumerate选择第一页。
import pdfplumber as pdfplumber
with pdfplumber.open("s12865-020-00390-9.pdf") as pdf:
text_without_abstract = ''
abstract = ''
for index, pdf_page in enumerate(pdf.pages):
if index == 0:
single_page_text = pdf_page.extract_text()
split_at_abstract = single_page_text.split("Abstract")
text_without_abstract += split_at_abstract[0]
split_at_asterisk_correspondence = split_at_abstract[1].split("*Correspondence")
abstract = split_at_asterisk_correspondence[0]
text_without_abstract += split_at_asterisk_correspondence[1]
else:
text_without_abstract += pdf_page.extract_text()
注意:这种方法非常依赖于文档的字符串内容。如果字符串";摘要";出现在摘要内部或者在摘要不是"之后的第一个字符串*信件";。
str.split((:https://docs.python.org/3.8/library/stdtypes.html#str.split