yqymzwq 发表于 2020-4-5 19:38:30

003课后习题

>>> print(r"Bruce Eckel say:\"Life is short, let\'s learn Python.\"")
Bruce Eckel say:\"Life is short, let\'s learn Python.\"

请问这到底这个 r 使后面转义了没有 为什么能正常运行
如果转义了 那么中间的双引号和前面的对应为什么不报错
如果没有 那么反斜杠\为什么还在

qiuyouzhi 发表于 2020-4-5 19:41:38

本帖最后由 qiuyouzhi 于 2020-4-5 20:02 编辑

1,没有,因为有r了
2,一共是4个双引号,两两对应,肯定不会报错呀

BngThea 发表于 2020-4-5 19:45:13

全部没有转义,除了最外层的双引号,全都原始输出了

zltzlt 发表于 2020-4-5 19:58:21

原始字符串统统不转义,\" 表示这是转义后的双引号

yqymzwq 发表于 2020-4-5 20:52:29

qiuyouzhi 发表于 2020-4-5 19:41
1,没有,因为有r了
2,一共是4个双引号,两两对应,肯定不会报错呀

不应该使就近对应嘛

qiuyouzhi 发表于 2020-4-5 20:53:28

yqymzwq 发表于 2020-4-5 20:52
不应该使就近对应嘛

我不记得Python可以这样。
最外层的对应最外层,最内层的对应最内层

yqymzwq 发表于 2020-4-5 20:53:51

BngThea 发表于 2020-4-5 19:45
全部没有转义,除了最外层的双引号,全都原始输出了

那中间的双引号原始输出不会和最前面的双引号构成一对 从而导致错误么?

yqymzwq 发表于 2020-4-5 20:55:04

zltzlt 发表于 2020-4-5 19:58
原始字符串统统不转义,\" 表示这是转义后的双引号

emmmmm 啥意思 那 \ 后的 " 到底被没被转义

BngThea 发表于 2020-4-5 20:58:13

yqymzwq 发表于 2020-4-5 20:53
那中间的双引号原始输出不会和最前面的双引号构成一对 从而导致错误么?

不会,因为反斜杠不能作为字符串的最后一个字符,除非转义

yqymzwq 发表于 2020-4-5 21:00:21

qiuyouzhi 发表于 2020-4-5 20:53
我不记得Python可以这样。
最外层的对应最外层,最内层的对应最内层

emmmm 应该是就近原则配对吧

qiuyouzhi 发表于 2020-4-5 21:03:40

yqymzwq 发表于 2020-4-5 21:00
emmmm 应该是就近原则配对吧

那是C语言。。。
再说了,真要是就近原则,肯定会报错
而这个没有

yqymzwq 发表于 2020-4-5 21:19:58

BngThea 发表于 2020-4-5 20:58
不会,因为反斜杠不能作为字符串的最后一个字符,除非转义

请问是不是这个意思 因为 \ 不能作为结尾 所以默认 \ 后面跟的 " 不是字符串的结尾 然后 因为第三个 ” 前面也有一个 \ 也默认 不是字符串的结尾 , 因为第四个 " 前面没有 \ 所以认为 第四个 “ 才是 与第一个 ” 对应的 “ 。而其中的 \"\" 其实都已经被转义了 变成了\\ \" \\ \"。
>>>print(r"Bruce Eckel say:\"Life is short, let\'s learn Python.\"")
Bruce Eckel say:\"Life is short, let\'s learn Python.\"

yqymzwq 发表于 2020-4-5 21:21:20

qiuyouzhi 发表于 2020-4-5 21:03
那是C语言。。。
再说了,真要是就近原则,肯定会报错
而这个没有

请问是不是这个意思 因为 \ 不能作为结尾 所以默认 \ 后面跟的 " 不是字符串的结尾 然后 因为第三个 ” 前面也有一个 \ 也默认 不是字符串的结尾 , 因为第四个 " 前面没有 \ 所以认为 第四个 “ 才是 与第一个 ” 对应的 “ 。而其中的 \"\" 其实都已经被转义了 变成了\\ \" \\ \"。
>>>print(r"Bruce Eckel say:\"Life is short, let\'s learn Python.\"")
Bruce Eckel say:\"Life is short, let\'s learn Python.\"

qiuyouzhi 发表于 2020-4-5 21:26:18

所有的\都被转义了。
>>> a = r"Bruce Eckel say:\"Life is short, let\'s learn Python.\""
>>> a
'Bruce Eckel say:\\"Life is short, let\\\'s learn Python.\\"'

yqymzwq 发表于 2020-4-5 21:30:06

qiuyouzhi 发表于 2020-4-5 21:26
所有的\都被转义了。

你这个肯定不是python 因为这样python会报错 这个语言的 “ 应该就是对应的是你说的外层对外层 python是就近对应 就会报错

yqymzwq 发表于 2020-4-5 21:31:13

qiuyouzhi 发表于 2020-4-5 21:26
所有的\都被转义了。

>>> a = r"Bruce Eckel say:\"Life is short, let\'s learn Python.\""
>>> a
'Bruce Eckel say:\\"Life is short, let\\\'s learn Python.\\"'

yqymzwq 发表于 2020-4-5 21:33:33

yqymzwq 发表于 2020-4-5 21:31
>>> a = r"Bruce Eckel say:\"Life is short, let\'s learn Python.\""
>>> a
'Bruce Eckel say:\\"Lif ...

可为什么 " 前面只有两个 \\ ???

yqymzwq 发表于 2020-4-5 21:34:13

qiuyouzhi 发表于 2020-4-5 21:26
所有的\都被转义了。

可为什么 " 前面只有两个 \\ ???

BngThea 发表于 2020-4-6 09:02:29

yqymzwq 发表于 2020-4-5 21:19
请问是不是这个意思 因为 \ 不能作为结尾 所以默认 \ 后面跟的 " 不是字符串的结尾 然后 因为第三个 ”...

对的

永恒的蓝色梦想 发表于 2020-4-6 10:49:26

qiuyouzhi 发表于 2020-4-5 21:03
那是C语言。。。
再说了,真要是就近原则,肯定会报错
而这个没有

python是就近匹配原则哦,只不过中间的双引号被转义了
页: [1] 2
查看完整版本: 003课后习题