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

use*_*472 6 python regex latex

我有一套LaTeX文件.我想为每一个提取"抽象"部分:

\begin{abstract}

.....

\end{abstract}
Run Code Online (Sandbox Code Playgroud)

我在这里尝试了这个建议:如何解析LaTex文件

并试过:

A = re.findall(r'\\begin{abstract}(.*?)\\end{abstract}', data)
Run Code Online (Sandbox Code Playgroud)

数据包含LaTeX文件中的文本.但这A只是一个空列表.任何帮助将不胜感激!

Joh*_*024 6

.* 除非提供re.S标志,否则与新行不匹配:

re.findall(r'\\begin{abstract}(.*?)\\end{abstract}', data, re.S)
Run Code Online (Sandbox Code Playgroud)

考虑这个测试文件:

\documentclass{report}
\usepackage[margin=1in]{geometry}
\usepackage{longtable}

\begin{document}
Title maybe
\begin{abstract}
Good stuff
\end{abstract}
Other stuff
\end{document}
Run Code Online (Sandbox Code Playgroud)

这得到了摘要:

>>> import re
>>> data = open('a.tex').read()
>>> re.findall(r'\\begin{abstract}(.*?)\\end{abstract}', data, re.S)
['\nGood stuff\n']
Run Code Online (Sandbox Code Playgroud)

文档

re模块的网页:

re.S
re.DOTALL

制作'.' 特殊字符匹配任何字符,包括换行符; 没有这个标志,'.' 将匹配除换行符之外的任何内容.