gpt4 book ai didi

Python 原始字符串和尾部反斜杠

转载 作者:IT老高 更新时间:2023-10-28 22:22:35 37 4
gpt4 key购买 nike

我曾经遇到过一个问题,想知道它是 Python 的“错误”还是至少是一个错误功能。我很好奇是否有人知道这种行为的任何理由。刚刚读到《Code Like a Pythonista》就想到了,到现在为止还挺享受的。我只熟悉 Python 的 2.x 行。

原始字符串是以 r 为前缀的字符串。这很棒,因为我可以在正则表达式中使用反斜杠,而且我不需要在所有地方都加倍。在 Windows 上编写一次性脚本也很方便,所以我也可以在那里使用反斜杠。 (我知道我也可以使用正斜杠,但一次性脚本通常包含从 Windows 其他地方剪切和粘贴的内容。)

太棒了!当然,除非您真的希望字符串以反斜杠结尾。在“原始”字符串中无法做到这一点。

In [9]: r'\n'
Out[9]: '\\n'

In [10]: r'abc\n'
Out[10]: 'abc\\n'

In [11]: r'abc\'
------------------------------------------------
File "<ipython console>", line 1
r'abc\'
^
SyntaxError: EOL while scanning string literal


In [12]: r'abc\\'
Out[12]: 'abc\\\\'

所以结束引号前的一个反斜杠是错误的,但是两个反斜杠给你两个反斜杠!当然不只我一个人对此感到困扰?

关于为什么“原始”字符串是“原始的,反斜杠引号除外”的想法?我的意思是,如果我想在其中嵌入单引号,我只需在字符串周围使用双引号,反之亦然。如果我想要两者,我只会三引号。如果我真的想在一个原始字符串中连续三个引号,那么我想我必须处理,但这被认为是“正确的行为”吗?

这对于 Windows 中的文件夹名称尤其成问题,其中反斜杠是路径分隔符。

最佳答案

这是一个 FAQ .

对于“你真的希望你的字符串以反斜杠结尾。在'原始'字符串中没有办法做到这一点。”:常见问题解答显示了如何解决它。

>>> r'ab\c' '\\' == 'ab\\c\\'
True
>>>

关于Python 原始字符串和尾部反斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2870730/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com