当前位置: 首页 > 面试题库 >

为什么Python的原始字符串文字不能以单个反斜杠结尾?

段干博明
2023-03-14
问题内容

从技术上讲,文档中描述了任意数量的反斜杠。

>>> r'\'
  File "<stdin>", line 1
    r'\'
       ^
SyntaxError: EOL while scanning string literal
>>> r'\\'
'\\\\'
>>> r'\\\'
  File "<stdin>", line 1
    r'\\\'
         ^
SyntaxError: EOL while scanning string literal

似乎解析器可以将原始字符串中的反斜杠视为常规字符(这不是原始字符串的全部含义吗?),但是我可能缺少明显的东西。


问题答案:

可以使用反斜杠对字符串引号进行转义,但反斜杠仍保留在字符串中;例如,r"\""是由两个字符组成的有效字符串文字:反斜杠和双引号;r"\"不是有效的字符串文字(即使是原始字符串也不能以奇数个反斜杠结尾)。具体来说,原始字符串不能以单个反斜杠结尾(因为反斜杠会转义以下引号字符)。还要注意,单个反斜杠后跟换行符被解释为这两个字符是字符串的一部分,而不是换行符。

因此,原始字符串不是100%原始的,仍然存在一些基本的反斜杠处理。



 类似资料:
  • 问题内容: 我在这里感到困惑,即使原始字符串将每个字符串都转换为,但是当最终出现时,它将引发错误。 更新: 现在,Python常见问题也涵盖了这一点:为什么原始字符串(r-strings)不能以反斜杠结尾? 问题答案: 您仍然需要转义或使用原始字符串,因为否则python解释器将不知道字符串在何处停止。在您的示例中,您将转义结束。 除此以外: 查看突出显示的语法,以了解我的意思。

  • 问题内容: 我需要在路径字符串中替换为,但是以下代码失败。 有什么有用的建议吗? 问题答案: 使用函数filepath.ToSlash将操作系统路径分隔符替换为路径中的“ /”。 在Windows上,函数返回。在其他操作系统上,该函数按原样返回path参数。

  • 问题内容: 你被输出误导了-你所采用的第二种方法实际上可以实现你想要的,只是你不相信它. 顺便说一句,还有另一种字符串形式可能会更清晰一些: 问题答案: 你被输出误导了-你所采用的第二种方法实际上可以实现你想要的,只是你不相信它。 顺便说一句,还有另一种字符串形式可能会更清晰一些:

  • 问题内容: 我该怎么做反斜杠的字符串替换。 输入源字符串: 在上面的字符串中,我想用“ /”替换“ \ /”; 更换后的预期产量: 我从第三方获得源字符串,因此可以控制字符串的格式。 这就是我尝试过的 试用1: 异常靠近索引1的意外内部错误\ 试用2: 无异常,但不执行必需的替换。什么都不做。 试用3: 无异常,但不执行必需的替换。什么都不做。 问题答案: 是不可变的-您在其上调用的每个方法都不会

  • 问题内容: 假设我有一个字符串,它是另一个字符串的反斜杠转义版本。在Python中,有没有一种简便的方法可以对字符串进行转义?例如,我可以这样做: 但是,这涉及将(可能不受信任的)字符串传递给eval(),这是安全隐患。标准库中是否有一个函数可以接收一个字符串并生成一个不涉及安全性的字符串? 问题答案: