我是Python新手。我正在制作LaTeX文件,其中包含大量的数学,编程代码等。我用" "
替换了多个空间" +"
。但我需要忽略在我的代码的某些部分。例如:
Normal Text:"Hai, I am New to Python"
。我用"Hai, I am New to Python"
将多个空间替换为单个空间。这个正则表达式应用于整个文档。但我需要忽略某些LaTeX标签中的多空间。例如
Hai, I am New to Python
begin{lstlisting}[title=Sample]
print("Hai, I am New to Python")
def Code(a):
print(a)
Code("Hai, i am new to Perl")
end{lstlisting}
在我的代码将begin{lstlisting}
到end{lstlisting}
之间的多空格改为单空格后
"Hai, I am New to Python"
begin{lstlisting}[title=Sample]
print("Hai, I am New to Python")
def Code(a):
print(a)
Code("Hai, i am new to Perl")
end{lstlisting}
如何忽略begin{lstlisting}
到end{lstlisting}
之间的python regex ?
一个合适的LaTeX解析器是可行的方法,但这可能是一个"足够好"的解决方案。看你怎么想。
import re
text = '''
Hai, I am New to Python
\begin{lstlisting}[title=Sample]
print("Hai, I am New to Python")
def Code(a):
print(a)
Code("Hai, i am new to Perl")
\end{lstlisting}
'''
text = re.sub(r' +(?!(?:(?!\begin{lstlisting}).)*\end{lstlisting})', ' ', text, flags=re.DOTALL)
print(text)
它的工作原理是,如果end{lstlisting}
出现在字符串前面,而begin{lstlisting}
出现在它前面,则不替换空格。