相关文章推荐
跑龙套的黄瓜  ·  RSA Encryption with ...·  8 月前    · 
自信的芒果  ·  hive sql ...·  1 年前    · 
沉稳的紫菜汤  ·  java.sql.SQLException: ...·  1 年前    · 

output : '@#2_#]&*^%$\\\\]'

python
Organic Heart
Organic Heart
发布于 2019-10-06
3 个回答
David Rechtman
David Rechtman
发布于 2019-10-06
已采纳
0 人赞同

反斜杠(backslash)字符用于转义那些具有特殊含义的字符,如换行符、反斜杠本身或引号字符。字符串可以选择以字母 "r "或 "R "为前缀;这样的字符串被称为原始字符串,对反斜杠转义序列使用不同的规则。

除非有'r'或'R'的前缀,否则字符串中的转义序列将按照类似于标准C语言的规则进行解释。

在与标准C的严格兼容中,最多接受三个八进制数字,但是不限数量的十六进制数字被认为是十六进制转义的一部分(然后在8位实现中使用所得十六进制数字的低8位)。

与标准C不同的是,所有未被识别的转义序列都被留在字符串中而不被改变,也就是说,反斜杠被留在字符串中。(这种行为在调试时很有用:如果转义序列打错了,产生的输出更容易被识别为断裂)。

当'r'或'R'前缀出现时,反斜线仍用于引用下面的字符,但所有反斜线都留在字符串中。例如,字符串文字r"/n "由两个字符组成:一个反斜线和一个小写的`n'。字符串引号可以用反斜杠转义,但反斜杠仍留在字符串中;例如,r"\"是一个有效的字符串字面,由两个字符组成:一个反斜杠和一个双引号;r"\"不是一个值字符串字面(即使是一个原始字符串也不能以奇数反斜杠结束)。具体来说,一个原始字符串不能以单个反斜杠结尾(因为反斜杠会转义到后面的引号字符)。还要注意的是,单反斜杠后面的换行被解释为这两个字符是字符串的一部分,而不是续行。

谢谢。让我不解的是在我的例子中,它没有转义。单反斜线产生双反斜线。双反斜线产生双反斜线。三重反斜线产生四重反斜线.....
@jalene 这是因为解释器给你看的是一个字符串的Python表示法,而不是字符串本身。 使用 print 来查看实际结果。
@jmster 当我打印时,它确实产生了不同的结果!谢谢
Karl Knechtel
Karl Knechtel
发布于 2019-10-06
0 人赞同

From your follow-up comment:

让我不解的是,在我的例子中,它没有转义。单反斜线产生双反斜线。双反斜线产生双反斜线。三重反斜线产生四重反斜线.....

要明确的是:你的第一个输出是一个字符串,带有 one 中的反斜杠。Python会在其 的代表 the string.

当你输入带有单个反斜杠的字符串时,Python 不把输入中的序列 \] 当作任何特殊的转义序列,因此 \ 在实际的字符串中变成了一个实际的反斜杠,而 ] 则变成了一个结尾的方括号。引述自 文件 由Klaus D.联系。

与标准C不同的是,所有未被识别的转义序列在字符串中都不会被改变,也就是说。 结果中留有反斜杠 .(这种行为在调试时很有用:如果转义序列输入错误,产生的输出更容易被识别为破损)。

当你输入带有双反斜杠的字符串时,序列 \\ 是一个转义序列,用于一个 single 反斜线,然后 ] 就只是一个 ]

无论哪种方式,当Python向你显示字符串时,它使用 \\ 来表示单个实际的反斜杠,因为它不会提前判断单个反斜杠是否有效--反斜杠总是被转义。

再详细说一下。Python 并不关心你首先是如何指定字符串的 - 它有一个特定的 "规范化 "形式,只取决于字符串实际包含的内容。我们可以通过玩弄引用字符串的不同方法来看到这一点。

>>> 'foo'
'foo'
>>> "foo"
'foo'
>>> r'foo'
'foo'
>>> """foo"""
'foo'

如果避免了单引号的转义序列,规范化的形式将使用双引号。

>>> '\'\'\''
"'''"

但如果字符串包含两种类型的引号,它将切换回单引号。

>>> '\'"'
'\'"'
>>> "'\"'
'\'"'

(练习:这个字符串中实际有多少个字符,它们是什么?该字符串包含多少个反斜线?)

它包含两个字符--一个单引号和一个双引号--以及no反斜线。

真的很感谢你的解释!它帮助我更好地理解Python中的()。
Sudhansu Kumar
Sudhansu Kumar
发布于 2019-10-06
0 人赞同

对于第一个模式 '@#2_#]&*^%$\]' 。 替换代码1】没有被转义,所以在输出中多加了一个 \ 来转义它。 对于第二个模式 【替换代码3