用python从LaTeX文件中提取特定的部分



我有一组LaTeX文件。我想为每个人提取"抽象"部分:

begin{abstract}
.....
end{abstract}

我已经尝试了这里的建议:如何解析LaTex文件

And tried:

A = re.findall(r'\begin{abstract}(.*?)\end{abstract}', data)

其中的数据包含来自LaTeX文件的文本。但是A只是一个空列表。任何帮助将非常感激!

.*不匹配换行符,除非给出re.S标志:

re.findall(r'\begin{abstract}(.*?)\end{abstract}', data, re.S)

例子

考虑这个测试文件:

documentclass{report}
usepackage[margin=1in]{geometry}
usepackage{longtable}
begin{document}
Title maybe
begin{abstract}
Good stuff
end{abstract}
Other stuff
end{document}

得到摘要:

>>> import re
>>> data = open('a.tex').read()
>>> re.findall(r'\begin{abstract}(.*?)\end{abstract}', data, re.S)
['nGood stuffn']
文档

来自re模块的网页:

再保险。S
re.DOTALL

使'。'特殊字符匹配任何字符所有,包括换行符;没有这面旗帜。可以匹配任何东西除了换行符。

.不匹配换行符。但是,您可以传递一个标志来要求它包含换行符。

的例子:

import re
s = r"""begin{abstract}
this is a test of the
linebreak capture.
end{abstract}"""
pattern = r'\begin{abstract}(.*?)\end{abstract}'
re.findall(pattern, s, re.DOTALL)
#output:
['nthis is a test of thenlinebreak capture.n']

最新更新