2015-06-10 34 views
3

我剛完成寫Latex中的微積分摘要。如何解析LaTex文件

現在的主要問題是,這些文件包含很多我現在不需要的東西。

.tex文件包含許多定義和定理,我需要仔細研究。

的定義必須在TEX文件自己的定義,因此文件中的任何定義將開始:

\begin{definition} 

\end{definition} 

與同爲定理結束。

我需要寫點東西去拿\begin{}...\end{}裏面的東西。

例如,在列表稱爲A:

\begin{document} 

\begin{center} 
\begin{definition} Hello WOrld! \end{definition} 
\begin{example}A+B \end{example} 
\begin{theorem} Tre Capre \end{theorem} 
\begin{definition} Hello WOrld2! \end{definition} 
\end{center} 
\end{document} 

應包含:

for i in range(5): 
    x = i+1 
    raw = open('tex/chapter' + str(x) + '.tex') 
    A = [] 
    for line in raw: 
     A.append(re.match(r'(\begin{definition})://.*\.(\end{definition})$', line)) 
print(A) 

但輸出:[[\begin{definition} Hello WOrld! \end{definition}],[\begin{theorem} Tre Capre \end{theorem}],[\begin{definition} Hello WOrld2! \end{definition}]]

在這個網站,我發現我可以使用正則表達式展望只是None,我不知道爲什麼

編輯:

import re 


for i in range(5): 
    x = i+1 
    raw = open('tex/chapter' + str(x) + '.tex') 
    A = re.findall(r'\\begin{definition}(.*?)\\end{definition}', raw.read()) 
    print(A) 

輸出如下:

[] 
[] 
[] 
[] 
[] 
+0

我會提示你給模板處理器LILE的Jinja2 –

+0

添加該網站引用,因爲(r'(\ begin {definition})://.* \。(\ end {definition})$',line)' – sgp

回答

4

從我從這個問題得到你只是想從乳膠文件中的定義。您可以使用findall直接讓你的定義:

A = re.findall(r'{definition}(.*?)\\end{definition}', raw.read()) 

注意用法.*?爲了應對greedy正則表達式匹配

+0

@BioShock是不是真的很清楚你想通過'這項工作爲你?或者你想要別的東西嗎? – sgp

+0

其實它不起作用!我的意思是,如果我用這一行運行腳本,並且我還添加''print(A)''它只是打印''[]''(空列表) – BioShock

+0

@BioShock你的輸入是什麼?現在檢查答案。我猜你輸入中的'\ b'被錯誤地解釋了 – sgp