|
发表于 2021-11-21 23:17:47
|
显示全部楼层
本帖最后由 lightninng 于 2021-11-22 00:01 编辑
一个很有意思的问题,我也很感兴趣。
先说结论,正如楼上所说这是python的固定用法,当你想在一个转义字符串中以\结尾,就要在非转义字符串后面再接一个显示\的转义字符串。虽然有了结论,但原理并不清楚。
根据百度的说法(https://www.cnblogs.com/songzhenhua/p/13236794.html),非转义字符串是不能以\结尾的,否则会被认为是一个换行符,然后后面即便输入对应的引号,字符串也不会结束
我们在python idle中做一点点尝试:
- >>> print('test1\\ttest2\\') #使用转义字符串输入test\test2\
- test1\ttest2\
- >>> print(r'test1\ttest2\') #使用非转义字符串输入test\test2\
-
- SyntaxError: EOL while scanning string literal
复制代码
这里有个有意思的点是,当反斜杠后面再加其他字符时,\似乎又不会被认为换行了又可以正常输出- >>> print(r'test1\ttest2\test3')
- test1\ttest2\test3
复制代码 我们来看看可以获得正确输出的方式
- >>> print(r'test1\test2''\\')
- test1\test2\
复制代码 为了加深理解我们再试试别的方式- >>> print(r'test1\test2' '\\')
- test1\test2\
- >>> print(r'test1\test2'"\\")
- test1\test2\
复制代码 然后再来看看一些有意思的情况
- >>> print(r'test1\ttest2\'\\')
- test1\ttest2\'\\
- >>> print(r'test1\ttest2\''\\')
-
- SyntaxError: unexpected character after line continuation character
复制代码 其实有意思的情况还有很多,不同情况下有不同的解释,比如三个同样的引号出现在不同的位置,最终获得的结果也不一样,楼主自行尝试,这确实是个很有意思的问题,希望楼主这种愿意学习的朋友越来越多~~
|
|