1 wbt 2017-07-30 10:36:17 +08:00 \ 是转义符号 如果你想输出 'why\' 要用 ``` print('why\\') ``` |
2 lleon OP 前面已经加 r 去掉了\的转义功能。 事实上,print('why\\')的结果是 why\\而不是 why\ |
3 lleon OP (少写了 r ) 事实上,print(r'why\\')的结果是 why\\而不是 why\ |
![]() | 4 RLib 2017-07-30 10:41:45 +08:00 ![]() |
![]() | 5 crayygy 2017-07-30 10:44:27 +08:00 via iPhone 一个单独的\ 不能放在最后 |
![]() | 6 Perry 2017-07-30 10:44:39 +08:00 via iPhone Specifically, a raw string cannot end in a single backslash (since the backslash would escape the following quote character). |
![]() | 7 SevnChen 2017-07-30 10:50:04 +08:00 你的右括号错了,) |
![]() | 9 SevnChen 2017-07-30 10:53:20 +08:00 错了,是我看错了。 |
![]() | 10 SoulSleep 2017-07-30 10:53:28 +08:00 @RLib 这个 Stack Overflow 下有个傻 x 老外....ID 感人....也不知道受了什么迫害,能在网上 bb 些没用的 |
![]() | 11 mimzy 2017-07-30 11:03:33 +08:00 @SoulSleep 记得之前他岳母是轮子学员 他在 V 站也有账号的 跟本帖跑题了就不多说了 |
12 admos 2017-07-30 11:04:35 +08:00 via iPhone 规范上面已经有人贴了 \'是和\t 一样是特殊的字符------单引号。 解释器 会跳过它 继续找单引号 来确定这个 string 在什么时候结束,所以报错。 |
![]() | 14 RLib 2017-07-30 11:42:14 +08:00 不过你不提我确实没注意到这个问题, 可惜 V2EX 不能删 |
![]() | 15 wisej 2017-07-30 12:24:44 +08:00 |
16 lleon OP |
17 lleon OP 接上 Console.WriteLine(@"dir ""c:\my docs"""); Python 的 r 字符串里如果有引号,还要根据里面的引号选择不同的外围引号,真麻烦 |
18 ksij 2017-07-30 13:05:03 +08:00 这样的话一条 print 语句输出一个\结束的字符就是不可能做到到事情了? print (r “ c:\windows\”) ??? |
19 whileFalse 2017-07-30 14:03:25 +08:00 我的理解是 python 的词法分析器不能理解 r 标记,而且每当遇到反斜杠时就会把反斜杠和他后面的一个字符组成一组。 因此楼主的字符串在词法分析这一层就报错了。 其实我觉得这是个 bug 啦(从语义上来说),但是又没那么好改,只好当成特性处理了。 |
20 SuperMild 2017-07-30 14:31:20 +08:00 ![]() @whileFalse 不是这样,而是在 r''里面仍然需要用反斜杠来对引号进行转义,而这也是没办法,因为既然是用引号做字符串的起点和终点,就必须在里面对引号进行转义。只能说是这个选择不太好,其实如果用反引号( backtick )来表示 raw string 可能是个更好的选择。 |
![]() | 22 zhangmiaoCHN 2017-07-31 09:00:23 +08:00 根本原因是 \" 和 \' ,这两个与 \t 和 \n 一样,是转义字符。 实际上,这的确是语言的一个 Bug,只不过被洗白成了特性。 |
23 zhuangzebo0 2017-07-31 09:25:55 +08:00 不算,正确的应该是 r'why\\'. \把'转义了。 |
![]() | 24 araraloren 2017-07-31 11:39:42 +08:00 也许设计的时候没考虑到,于是把这个写到文档里面变成了一个例外。。 类似于,Perl 6 的 Q 无视任何转义字符 say Q{There is a backslash in the end \}; # |
![]() | 25 araraloren 2017-07-31 11:40:28 +08:00 接上文 ~~ 漏了个 C# |