mch*_*rnc 56 python regex python-3.x
我re在Python 3.6.5中遇到了模块问题.我的正则表达式中有这种模式:
'\\nRevision: (\d+)\\n'
Run Code Online (Sandbox Code Playgroud)
但是当我运行它时,我得到了一个DeprecationWarning.
ACa*_*ino 95
Python 3将字符串文字解释为Unicode字符串,因此您的\ d被视为转义的Unicode字符.
将您的RegEx模式声明为原始字符串,而不是预先添加r,如下所示:
r'\nRevision: (\d+)\n'
Run Code Online (Sandbox Code Playgroud)
这也意味着您可以删除转义,\n因为这些转义只会被解析为换行符re.
您收到弃用警告
'\\nRevision: (\d+)\\n'
Run Code Online (Sandbox Code Playgroud)
因为Python将其解释\d为无效的转义序列。事实上,Python 不会替换该子字符串,但从版本 3.6 开始会发出警告:
与标准 C 不同,所有无法识别的转义序列都保留在字符串中不变,即反斜杠保留在结果中。(此行为在调试时很有用:如果转义序列输入错误,则生成的输出更容易被识别为损坏。)还需要注意的是,仅在字符串文字中识别的转义序列属于无法识别的字节转义类别。文字。
版本 3.6 中的更改:无法识别的转义序列会产生 DeprecationWarning。在未来的 Python 版本中,它们将是 SyntaxWarning,并最终是 SyntaxError。
(来源)
因此,您可以通过正确转义反斜杠或使用原始字符串来修复此警告。
这意味着,更多地逃避:
'\\nRevision: (\\d+)\\n'
Run Code Online (Sandbox Code Playgroud)
或者,使用原始字符串文字(其中\不开始转义序列):
r'\nRevision: (\d+)\n'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27133 次 |
| 最近记录: |