弃用警告:无效的转义序列 - 用啥代替 \d?
Posted
技术标签:
【中文标题】弃用警告:无效的转义序列 - 用啥代替 \\d?【英文标题】:DeprecationWarning: invalid escape sequence - what to use instead of \d?弃用警告:无效的转义序列 - 用什么代替 \d? 【发布时间】:2018-11-03 09:29:18 【问题描述】:我在 Python 3.6.5 中遇到了 re
模块的问题。
我的正则表达式中有这种模式:
'\\nRevision: (\d+)\\n'
但是当我运行它时,我得到了一个DeprecationWarning
。
我搜索了the problem on SO,但实际上并没有找到答案——我应该使用什么来代替\d+
?只是[0-9]+
还是别的什么?
【问题讨论】:
应该没问题,提供更多代码? 双重转义\d
或使用r'\\nRevision: (\d+)\\n'
?
【参考方案1】:
Python 3 将字符串文字解释为 Unicode 字符串,因此您的 \d
被视为转义的 Unicode 字符。
通过添加 r
将您的 RegEx 模式声明为原始字符串,如下所示:
r'\nRevision: (\d+)\n'
这也意味着您也可以删除\n
的转义符,因为re
只会将这些转义符解析为换行符。
【讨论】:
更准确地说,\d
被视为无法识别的转义序列,因此保持不变。自 Python 3.6 起给出了 DeprecationWarning。在 Python 的某些未来版本中,它将是一个 SyntaxError。文档中“2.4.1. String and Bytes literals”的详细信息。
@VPfB 线程很旧,但我正在寻找相同问题的答案。如果 \d 被视为转义的 Unicode 字符,如何在不将正则表达式模式视为原始字符串的情况下将 d(字母字符)与 \d(任何数字)区分开来? (同样的问题适用于 \w、\W 等...)
@theggg 如果我正确理解了您的问题 - 请转义您的反斜杠,因此字符串将显示为 '\\d'
。
这也适用于\s
和其他转义字符以上是关于弃用警告:无效的转义序列 - 用啥代替 \d?的主要内容,如果未能解决你的问题,请参考以下文章
Swift UITesting 错误:文字中的转义序列无效。 \U201c
如何在Python中修复“DeprecationWarning:无效的转义序列”?
解决警告: DeprecationWarning: invalid escape sequence D
io.netty.handler.codec.http.multipart.HttpPostRequestDecoder$ErrorDataDecoderException:错误的字符串无效的转义序列