我有以下代码:
import re
a = '\frac{{P_{\mathrm{0p}}}^2}{P_{\mathrm{0p}}+R} & \frac{31}{30}'
b = re.sub(r'\\mathrm\{([0pr]+)\}', r'\1', a)
print b
我得到这个结果:
rac{{P_{0p}}^2}{P_{0p}+R} & rac{31}{30}
\f
在哪里?
我想念什么?
答案 0 :(得分:3)
它不会删除它,但是\ f是换页符号。您必须使用额外的\
作为\\frac...
来对其进行转义,或者像在第二个字符串r'\frac...
答案 1 :(得分:2)
反斜杠在Python字符串文字(see docs)中具有特殊含义。
写时:
a = '\frac...'
Python看到的是:“创建一个名为a
的变量,并为其分配一个字符串,该字符串由'ASCII Formfeed' character \f
,r
,{{ 1}},a
,c
,.
,.
。” 换页符是控制字符,它仍然存在,但是当它不可见时您将打印字符串。
如果您打算在字符串中保留实际的.
,则必须转义反斜杠:
'\f'
这样,Python就会看到“创建一个名为a = '\\frac...'
的变量,并为其分配一个字符串,该字符串由a
,\
,f
,{{1 }},r
,a
,c
,.
。”
或者您使用原始字符串,它会禁用“反斜杠具有特殊含义”机制:
.
原始字符串的优势:将反斜杠用作反斜杠变得更加容易。
原始字符串的缺点:插入换行符或制表符之类的特殊字符变得越来越困难。