首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何修复Python中的"<string> DeprecationWarning:无效的转义序列“?

如何修复Python中的"<string> DeprecationWarning:无效的转义序列“?
EN

Stack Overflow用户
提问于 2018-09-15 00:30:53
回答 2查看 37.2K关注 0票数 35

在Python中,我收到了很多类似这样的警告:

代码语言:javascript
运行
复制
DeprecationWarning: invalid escape sequence \A
  orcid_regex = '\A[0-9]{4}-[0-9]{4}-[0-9]{4}-[0-9]{3}[0-9X]\Z'

DeprecationWarning: invalid escape sequence \/
  AUTH_TOKEN_PATH_PATTERN = '^\/api\/groups'

DeprecationWarning: invalid escape sequence \
  """

DeprecationWarning: invalid escape sequence \.
  DOI_PATTERN = re.compile('(https?://(dx\.)?doi\.org/)?10\.[0-9]{4,}[.0-9]*/.*')

<unknown>:20: DeprecationWarning: invalid escape sequence \(

<unknown>:21: DeprecationWarning: invalid escape sequence \(

它们是什么意思?我怎么才能修复它们呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-15 00:30:53

\ is the escape character in Python string literals

例如,如果你想在字符串中放一个制表符,你可以这样做:

代码语言:javascript
运行
复制
>>> print("foo \t bar")
foo      bar

如果要将文字\放入字符串中,则必须使用\\

代码语言:javascript
运行
复制
>>> print("foo \\ bar")
foo \ bar

或者使用“原始字符串”:

代码语言:javascript
运行
复制
>>> print(r"foo \ bar")
foo \ bar

你不能在你想要的时候在字符串中放反斜杠。如果反斜杠后面没有一个有效的转义序列和newer versions of Python print a deprecation warning,则该反斜杠无效。例如,\A不是转义序列:

代码语言:javascript
运行
复制
$ python3.6 -Wd -c '"\A"'
<string>:1: DeprecationWarning: invalid escape sequence \A

如果您的反斜杠序列确实意外地匹配了Python的转义序列之一,但您并不是故意的,那就更糟了。

因此,您应该始终使用原始字符串或\\

重要的是要记住,字符串文字仍然是字符串文字,即使该字符串打算用作正则表达式。Python's regular expression syntax支持许多以\开头的特殊序列。例如,\A匹配字符串的开头。但是\A在Python字符串文字中无效!这无效:

代码语言:javascript
运行
复制
my_regex = "\Afoo"

相反,您应该这样做:

代码语言:javascript
运行
复制
my_regex = r"\Afoo"

文档字符串是另一个需要记住的:文档字符串也是字符串文字,无效的\序列在文档字符串中也是无效的!如果文档字符串包含\,请对其使用原始字符串(r"""...""")。

票数 50
EN

Stack Overflow用户

发布于 2020-05-11 09:51:19

当我将路径名称中的\更改为\时,解决了无效转义序列警告。请在下面找到附件中的截图以供参考。我在pycharm中得到了这个错误:

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52335970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档