求助:python中split()语法,使用特殊符号作为分隔符,反斜杠转义后,结果不符合预期要怎么办

问题

报错信息

环境

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编辑格式,不是不能显示 \,而是同样道理需要写成 \\

2 个赞

:ok_hand:明白了,谢谢学委 :grin: