问题
报错信息
环境
python版本3.10.5
那个字符串发出来一下
YZ = ‘00. 1$2 | 3( ) 4[ { ^ ? *+ *= M111’
这里好像没办法显示转义符号\,实际上+和星号之间是有一个反斜杠的
其实跟是?没有关系的
首先需要了解一下字符串中 \ 是什么作用:
\是用于转义字符串文字中的特殊(不可打印)字符,格式为\+字符。如 \n 用于换行,\t 对于标签,\f
对于换页等等。需要注意的是,如果我们就是想在字符串中写 \,实际我们应该写成 \\
在这个字符串中,使用了 \* 这样的转义字符,但是其实这个转移字符是不存在,不能被正确转义
(可以看到字符串被pycharm标记了波浪线,提示为PEP 8: W605 invalid escape sequence ‘\*’,无效转义序列)
YZ带有 \ 的正确写法应该是:
YZ = ‘00. 1$2 | 3( ) 4[ { ^ ? *+ \\*= M111’
理解了这些原理之后,就可以解释这几个输出结果了:
第一个输出,未转义前:正常切割,错误的 \ 由系统自动处理成正常写法 \\
第二个输出,转义后:\?这个转义符不存在,所以不能切割,同样的,\ 由系统自动处理
第三个输出,\转义后:先由系统自动处理 \ 成正确格式 \\,在使用 \ 进行切割
另外提一下,社区帖子是md编辑格式,不是不能显示 \,而是同样道理需要写成 \\
明白了,谢谢学委