【问题标题】:Why does the python regex.sub method delete \fr?为什么 python regex.sub 方法会删除 \fr?
【发布时间】:2018-08-15 05:42:39
【问题描述】:

我有以下代码:

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 在哪里?

我错过了什么?

【问题讨论】:

    标签: regex python-2.7 jupyter-notebook


    【解决方案1】:

    它不会删除它,但 \f 是换页的符号。您必须使用额外的 \ 将其转义为 \\frac... 或通过在第二个字符串 r'\frac... 上添加 r 来使用原始字符串。

    【讨论】:

      【解决方案2】:

      反斜杠在 Python 字符串文字中具有特殊含义 (see docs)。

      当你写作时:

      a = '\frac...'
      

      Python 看到的是:"创建一个名为 a 的变量并为其分配一个字符串,该字符串由 'ASCII Formfeed' character \frac、@987654329 组成@、..。” 换页符是一个控制字符,它仍然存在,但在打印字符串时它不可见。

      如果您要在字符串中保留实际的'\f',则必须转义反斜杠

      a = '\\frac...'
      

      Python 看到这种方式 “创建一个名为 a 的变量并为其分配一个由 \frac. 组成的字符串,..。"

      或者你使用一个原始字符串,它会禁用“反斜杠有特殊含义”机制:

      a = r'\frac...'
      

      原始字符串的优势:使用反斜杠作为反斜杠变得更容易。
      原始字符串的缺点:使用插入特殊字符(如换行符或制表符)变得更加困难。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-07
        • 2021-06-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-09
        相关资源
        最近更新 更多