gpt4 book ai didi

python - 如何在python中匹配latex引用书目?

转载 作者:太空宇宙 更新时间:2023-11-03 19:53:04 24 4
gpt4 key购买 nike

我正在尝试从 LaTeX 源代码中获取纯文本,并希望删除引用书目。例如,

\begin{thebibliography}{99}
\bibitem{b0} J.Dunietz, J.Hauser, J.L.Rosner, Phys. Rev. {\bf D}35 (1987)
2166
\end{thebibliography}

我找到了用于提取的 detex 模块,但我仍在尝试先删除引用书目(使用 python re)。我现在拥有的是:

>>> b = '\newpage\begin{thebibliography}{99}\bibitem{b0} J.Dunietz, J.Hauser\end{thebibliography}'
>>> re.sub('\\\\begin\{thebibliography\}(.*?)\\\\end\{thebibliography\}', ' ', b)
'\newpage\x08egin{thebibliography}{99}\x08ibitem{b0} J.Dunietz, J.Hauser\\end{thebibliography}'

这里的理想结果应该是:\newpage。我想知道我在这里做错了什么?谢谢!

最佳答案

您可以使用原始字符串,以大大减少处理转义的精神负担(特别是在处理字符串和正则表达式级别的转义时)。让我们将 b 定义为原始字符串(注意 r''):

b = r'\newpage\begin{thebibliography}{99}\bibitem{b0} J.Dunietz, J.Hauser\end{thebibliography}'

让我们看看字符串中的内容:

>>> b
'\\newpage\\begin{thebibliography}{99}\\bibitem{b0} J.Dunietz, J.Hauser\\end{thebibliography}'

>>> print(b)
\newpage\begin{thebibliography}{99}\bibitem{b0} J.Dunietz, J.Hauser\end{thebibliography}

原始字符串似乎已正确转义反斜杠。现在我们可以简单地使用空字符串re.sub该模式。同样,我们将使用原始字符串来定义模式以简化转义:

>>> result = re.sub(r'\\begin\{thebibliography\}.*?\\end\{thebibliography\}', '', b)

>>> result
'\\newpage'

>>> print(result)
\newpage

关于python - 如何在python中匹配latex引用书目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59709908/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com