在Python Docstring中写双反斜杠

5

我正在为一个带有清除停止字符函数的 Python 包编写文档,其中用户可以提供一个额外停止字符列表。在文档中我已经写道:

"""
stoplist (list, default empty): Accepts a list of extra stop characters,
            should escape special regex characters (e.g., stoplist=['\\*']).
"""

对于用户来说,在停止字符之前看到双斜杠是至关重要的。然而,构建包的help()结果显示:

"""
stoplist (list, default empty): Accepts a list of extra stop characters,
            should escape special regex characters (e.g., stoplist=['\*']).
"""

因此,这将给用户造成误导。
顺便说一句,我没有找到基于以前问题的解决方案。
有什么想法吗?


1
这个回答解决了你的问题吗?为什么Python在__doc__中不自动转义''? - python_user
@python_user 是的,没错。但是我认为下一个答案也很好。或许这条记录可以帮助其他人。 - maaniB
1
https://peps.python.org/pep-0257/#:~:text=quotes%22%22%22%20around%20docstrings.-,Use,-r%22%22%22raw%20triple - Andrew
1个回答

4

在Python中,反斜杠(\)是一个转义字符,告诉Python将其后面的字符解释为字面意义。这意味着\\ 告诉 Python 将第二个\ 解释为字面意义,从而导致第一个反斜杠不被显示的错误。

解决这个问题最简单的方法是使用四个反斜杠:\\\\。这样,Python会看到第一个反斜杠并将其后面的第二个反斜杠解释为字面意义,打印输出一个\。然后,第三个反斜杠告诉Python将第四个反斜杠解释为字面意义,像\那样处理。

只需按以下方式修改您的代码:

"""
stoplist (list, default empty): Accepts a list of extra stop characters,
            should escape special regex characters (e.g., stoplist=['\\\\*']).
"""

现在,当用户查看源文件时,文档字符串本身就是错误的,这怎么能算是一个好的解决方案呢? - bugmenot123
1
通常情况下,文档字符串用于生成源代码的文档页面;每当访问__doc__对象时,它将只有两个反斜杠而不是四个,因此任何面向用户的文档都会始终显示正确。源文件仍然会有四个反斜杠,但这是反斜杠被用作转义字符的不可避免的结果。 - q9i

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接