Один из способов сделать эту работу -
from TexSoup import TexSoup
tex = r"""
\documentclass[12pt]{article}
\begin{document}
\begin{equation}
1 + 1
\end{equation}
\end{document}
"""
a = TexSoup(tex).count('equation')
print(a)
, что дает
1
, как и ожидалось.
Обратите внимание, что вам нужно правильно обрабатывать обратную косую черту в тексте. источник, поэтому необработанная строка проще всего. count
точно предназначен для подсчета экземпляров, но экземпляры - это не подстроки документа, а проанализированные конструкции. find_all
возвращает вместо этого итератор для суповых узлов:
b = TexSoup(tex).find_all('equation')
print(type(next(b)))
дает
<class 'TexSoup.data.TexNode'>
, а его содержимое получается с all
for i in b:
for x in i.all:
print(x)
, давая
1 + 1