Py学习  »  Python

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

Yellowspring • 3 年前 • 1477 次点击  

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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/130492
 
1477 次点击  
文章 [ 1 ]  |  最新文章 3 年前
Amadan
Reply   •   1 楼
Amadan    3 年前

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

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

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

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

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

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