Python:用“\\”替换“\”
Python: Replacing "\" with "\\"
我想将“\”替换为“\\”以便进一步编辑并导出到 LaTeX。
(这是一个矩阵计算器,它应该将计算的所有步骤导出到 LaTeX)
import re
text='''
\begin{alignat*}{2}
\begin{sysmatrix}{rrr|r}
1 & 2 & 0 & 0 \
-1 & 1 & 2 & 0 \
1 & 0 & 1 & 5 \
0 & -2 & 1 & 4
\end{sysmatrix}'''
我已经尝试了 replace()
和 re.sub()
。我找到的答案建议使用这两个,但我想它们在这种情况下不起作用。
print(re.sub('\\',' \\\\', text))
print(text.replace('\',' \\'))
print(text.replace('\',r' \\'))
输出
egin{alignat*}{2}
egin{sysmatrix}{rrr|r}
1 & 2 & 0 & 0 \
-1 & 1 & 2 & 0 \
1 & 0 & 1 & 5 \
0 & -2 & 1 & 4
\end{sysmatrix}
egin{alignat*}{2}
egin{sysmatrix}{rrr|r}
1 & 2 & 0 & 0 \
-1 & 1 & 2 & 0 \
1 & 0 & 1 & 5 \
0 & -2 & 1 & 4
\end{sysmatrix}
egin{alignat*}{2}
egin{sysmatrix}{rrr|r}
1 & 2 & 0 & 0 \\
-1 & 1 & 2 & 0 \\
1 & 0 & 1 & 5 \\
0 & -2 & 1 & 4
\\end{sysmatrix}
应该是这样的:
\begin{alignat*}{2}
\begin{sysmatrix}{rrr|r}
1 & 2 & 0 & 0 \
-1 & 1 & 2 & 0 \
1 & 0 & 1 & 5 \
0 & -2 & 1 & 4
\end{sysmatrix}'
或者这个:
\begin{alignat*}{2}
\begin{sysmatrix}{rrr|r}
1 & 2 & 0 & 0 \\
-1 & 1 & 2 & 0 \\
1 & 0 & 1 & 5 \\
0 & -2 & 1 & 4
\end{sysmatrix}'
关于如何使用 python 编写 LaTeX 文档的任何其他想法?
好吧,您的替换确实有效(它正确地将 \
替换为 \
),但是您的初始字符串定义中存在问题:当您定义 text
时,它确实实际上不是以反斜杠和单词 begin
开头,而是以字符 \b
开头,这是一个 ASCII 退格符 (cmp: what does backward-slash b do in Python?),后跟 egin
.
如果您使用 print(repr(text))
:
打印字符串的非解释表示,您可以看到这一点
'\n\x08egin{alignat*}{2}\n\x08egin{sysmatrix}{rrr|r}\n 1 & 2 & 0 & 0 \\n-1 & 1 & 2 & 0 \\n 1 & 0 & 1 & 5 \\n 0 & -2 & 1 & 4\n\end{sysmatrix}'
如果您首先正确定义了字符串
text='''
\begin{alignat*}{2}
\begin{sysmatrix}{rrr|r}
1 & 2 & 0 & 0 \\
-1 & 1 & 2 & 0 \\
1 & 0 & 1 & 5 \\
0 & -2 & 1 & 4
\end{sysmatrix}'''
一切都应该没问题。一个简单的 print(text)
产生
\begin{alignat*}{2}
\begin{sysmatrix}{rrr|r}
1 & 2 & 0 & 0 \
-1 & 1 & 2 & 0 \
1 & 0 & 1 & 5 \
0 & -2 & 1 & 4
\end{sysmatrix}
尽管这也使得对正则表达式替换的整体需求已经过时,因此您的问题中可能缺少约束条件。
我想将“\”替换为“\\”以便进一步编辑并导出到 LaTeX。 (这是一个矩阵计算器,它应该将计算的所有步骤导出到 LaTeX)
import re
text='''
\begin{alignat*}{2}
\begin{sysmatrix}{rrr|r}
1 & 2 & 0 & 0 \
-1 & 1 & 2 & 0 \
1 & 0 & 1 & 5 \
0 & -2 & 1 & 4
\end{sysmatrix}'''
我已经尝试了 replace()
和 re.sub()
。我找到的答案建议使用这两个,但我想它们在这种情况下不起作用。
print(re.sub('\\',' \\\\', text))
print(text.replace('\',' \\'))
print(text.replace('\',r' \\'))
输出
egin{alignat*}{2}
egin{sysmatrix}{rrr|r}
1 & 2 & 0 & 0 \
-1 & 1 & 2 & 0 \
1 & 0 & 1 & 5 \
0 & -2 & 1 & 4
\end{sysmatrix}
egin{alignat*}{2}
egin{sysmatrix}{rrr|r}
1 & 2 & 0 & 0 \
-1 & 1 & 2 & 0 \
1 & 0 & 1 & 5 \
0 & -2 & 1 & 4
\end{sysmatrix}
egin{alignat*}{2}
egin{sysmatrix}{rrr|r}
1 & 2 & 0 & 0 \\
-1 & 1 & 2 & 0 \\
1 & 0 & 1 & 5 \\
0 & -2 & 1 & 4
\\end{sysmatrix}
应该是这样的:
\begin{alignat*}{2}
\begin{sysmatrix}{rrr|r}
1 & 2 & 0 & 0 \
-1 & 1 & 2 & 0 \
1 & 0 & 1 & 5 \
0 & -2 & 1 & 4
\end{sysmatrix}'
或者这个:
\begin{alignat*}{2}
\begin{sysmatrix}{rrr|r}
1 & 2 & 0 & 0 \\
-1 & 1 & 2 & 0 \\
1 & 0 & 1 & 5 \\
0 & -2 & 1 & 4
\end{sysmatrix}'
关于如何使用 python 编写 LaTeX 文档的任何其他想法?
好吧,您的替换确实有效(它正确地将 \
替换为 \
),但是您的初始字符串定义中存在问题:当您定义 text
时,它确实实际上不是以反斜杠和单词 begin
开头,而是以字符 \b
开头,这是一个 ASCII 退格符 (cmp: what does backward-slash b do in Python?),后跟 egin
.
如果您使用 print(repr(text))
:
'\n\x08egin{alignat*}{2}\n\x08egin{sysmatrix}{rrr|r}\n 1 & 2 & 0 & 0 \\n-1 & 1 & 2 & 0 \\n 1 & 0 & 1 & 5 \\n 0 & -2 & 1 & 4\n\end{sysmatrix}'
如果您首先正确定义了字符串
text='''
\begin{alignat*}{2}
\begin{sysmatrix}{rrr|r}
1 & 2 & 0 & 0 \\
-1 & 1 & 2 & 0 \\
1 & 0 & 1 & 5 \\
0 & -2 & 1 & 4
\end{sysmatrix}'''
一切都应该没问题。一个简单的 print(text)
产生
\begin{alignat*}{2}
\begin{sysmatrix}{rrr|r}
1 & 2 & 0 & 0 \
-1 & 1 & 2 & 0 \
1 & 0 & 1 & 5 \
0 & -2 & 1 & 4
\end{sysmatrix}
尽管这也使得对正则表达式替换的整体需求已经过时,因此您的问题中可能缺少约束条件。