我是Python新手。我正在处理LaTeX文件,其中包含大量的数学、编程代码等。我用" "替换了多个空间的" +"。但我需要忽略代码的某些部分。例如:
普通文本:"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
发布于 2022-05-29 12:10:34
正确的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}出现在字符串前面,则不替换空格。
https://stackoverflow.com/questions/72422011
复制相似问题