首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Python中的单个反斜杠原始字符串会导致语法错误?

为什么Python中的单个反斜杠原始字符串会导致语法错误?
EN

Stack Overflow用户
提问于 2015-05-17 03:31:47
回答 1查看 2.8K关注 0票数 7

还请参阅Why can't I end a raw string with a backslash?Why can't Python's raw string literals end with a single backslash?的问题和相关答案。

在我的Python 2程序中,我使用了许多带有内嵌反斜杠的文字字符串。我可以使用另一个反斜杠来转义这些反斜杠(例如:"red\\blue")或使用Python原始字符串(例如:r"red\blue")。我已经标准化了原始字符串方法,除了一个之外,它在所有情况下都工作得很好。

如果我想表示一个双反斜杠,我可以使用r"\\",但是如果我尝试输入一个反斜杠--文本r"\",Python会出现语法错误。显而易见的解决办法是在本例中使用"\\",但是为什么单个原始字符串反斜杠是错误?这是Python中的错误吗?有方法将单个反斜杠编码为原始字符串吗?

示例:

代码语言:javascript
复制
>>> r"red\blue"
'red\\blue'
>>> r"\\"
'\\\\'
>>> r"\"
  File "<stdin>", line 1
    r"\"
       ^
SyntaxError: EOL while scanning string literal
>>> 

我宁愿在整个程序中始终使用原始字符串,并且在几个地方使用这个"\\"似乎是一种套话。使用r"\\"[0]并不更好。我还考虑过使用常量BACKSLASH,在程序开始时使用BACKSLASH = r"\\"[0]。另一个传说。

更新:当原始字符串的末尾有奇数反斜杠时,也会发生此错误。使用的默认字符串扫描器将反斜杠解释为转义字符,以便最后一个反斜杠将转义结束引号字符。它的目的是"'可以嵌入到字符串中,但是得到的字符串中仍然有反斜杠作为普通字符。

与此问题有关的问题有几个,但没有一个答案解释为什么单个反斜杠原始字符串是错误的,或者如何将单个反斜杠编码为原始字符串:

python replace single backslash with double backslash

can't print '\' (single backslash) in Python

Python regex to replace double backslash with single backslash

Convering double backslash to single backslash in Python 3

Why can't I end a raw string with a backslash?

Why can't Python's raw string literals end with a single backslash?

EN

回答 1

Stack Overflow用户

发布于 2015-05-17 03:37:04

这里的问题很简单,系统假设单个反斜杠用于转义,您正在转义引用,否则必须转义字符。这将发生在任何允许字符禁用另一个字符函数的环境中。

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

https://stackoverflow.com/questions/30283082

复制
相关文章

相似问题

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