代码之家  ›  专栏  ›  技术社区  ›  Yellowspring

这个Python代码中的错误是什么

  •  -4
  • Yellowspring  · 技术社区  · 2 年前

    我只是Python的初学者。你知道为什么在这里加下划线吗? enter image description here

    1 回复  |  直到 2 年前
        1
  •  1
  •   Amadan    2 年前

    这是一个普通字符串,它有转义机制,在某些字符前加上反斜杠,为它们创建特殊的含义(例如。 \n , \u791c ...) 或者剥夺它们的特殊意义( \" , \\ ...). 然而,序列 \d 未定义,以及 "\d" 相当于 "d" .

    (因此,您的代码将只匹配由字母的任意重复次数组成的字符串。) d 没有别的,比如 “d” , "dd" "dddddddd" ,这大概不是你想要的——这就是为什么编辑警告你那里可能有什么气味。)

    这对于正则表达式来说相当不方便,因为正则表达式也使用反斜杠进行转义,所以每个反斜杠都必须另外转义。生成包含 \d ,必须将反斜杠加倍,以便反斜杠保留下来,以便包含在字符串中: \\d .如果你真的想在正则表达式中匹配反斜杠,你必须在正则表达式中转义它,但你也需要在字符串文本中转义它,这会导致一个看起来很可笑的结果 "\\\\" .

    为此,Python有“原始字符串”,反斜杠转义不起作用——反斜杠就是反斜杠。要制作原始字符串,只需预加 r .

    因此,你应该写下以下其中一个:

    "^\\d+$"
    r"^\d+$"