小明你咋老重名 发表于 2020-4-26 13:04:36

Python中关于反斜杠的问题

在做题目的时候发现一些问题。
如果字符结尾为‘\’,会报错,然后用了raw字符串依然会报错
>>> sp1 = r'~!@#$%^&*()_=-/,.?<>;:[]{}|\'
SyntaxError: EOL while scanning string literal
>>> sp1 = r'~!@#$%^&*()_=-/,.?<>;:[]{}|\'
SyntaxError: EOL while scanning string literal

于是我多加了一个‘\’转义,利用print()似乎没什么问题,但是在碰到索引sp1[-4:]的时候发现返回显示的是有两个‘\’的,那是不是转义字符其实是不算在字符串里的呀,因为len()显示好像是不算的,但为什么不算呢?转义字符不是字符串吗?{:10_272:}

>>> sp1 = '~!@#$%^&*()_=-/,.?<>;:[]{}|\\'
>>> print(sp1)
~!@#$%^&*()_=-/,.?<>;:[]{}|\
>>> sp1[-4:]
'{}|\\'
>>> len(sp1)
28

zltzlt 发表于 2020-4-26 13:05:59

本帖最后由 zltzlt 于 2020-4-26 13:13 编辑

\ 不能放在原始字符串末尾,如果偏要这样做可以这样灵活处理:

>>> a = r"abcde""\\\"    # 实际上相当于 r"abcde" + "\\\"
>>> print(a)
abcde\

永恒的蓝色梦想 发表于 2020-4-26 13:13:01

zltzlt 发表于 2020-4-26 13:05
\ 不能放在原始字符串末尾,如果偏要这样做可以这样灵活处理:

实际上会报错

zltzlt 发表于 2020-4-26 13:13:21

永恒的蓝色梦想 发表于 2020-4-26 13:13
实际上会报错

论坛把其中一个反斜杠吃掉了……{:10_262:}

永恒的蓝色梦想 发表于 2020-4-26 13:14:53

zltzlt 发表于 2020-4-26 13:13
论坛把其中一个反斜杠吃掉了……

{:10_256:}

小明你咋老重名 发表于 2020-4-26 13:47:49

zltzlt 发表于 2020-4-26 13:05
\ 不能放在原始字符串末尾,如果偏要这样做可以这样灵活处理:

那为什么 sp1 = '~!@#$%^&*()_=-/,.?<>;:[]{}|\\' 显示的只有28个字符啊,起到转义作用的‘\’Python是不是会自动忽略呢,然后在索引里面也是默认它不存在于字符串中?

_2_ 发表于 2020-4-26 14:43:08

小明你咋老重名 发表于 2020-4-26 13:47
那为什么 sp1 = '~!@#$%^&*()_=-/,.?;:[]{}|\\' 显示的只有28个字符啊,起到转义作用的‘\’Python是不是 ...

对,转义的反斜杠(\)会被忽略

_2_ 发表于 2020-4-26 14:44:31

zltzlt 发表于 2020-4-26 13:13
论坛把其中一个反斜杠吃掉了……

妙哉:
>>> "a""\\"
'a\\'
>>> print(_)
a\
>>>

hrp 发表于 2020-4-26 14:47:09

https://fishc.com.cn/thread-162591-1-1.html

小明你咋老重名 发表于 2020-4-26 17:00:06

_2_ 发表于 2020-4-26 14:43
对,转义的反斜杠(\)会被忽略

好的,谢谢你~

zltzlt 发表于 2020-4-26 17:17:02

_2_ 发表于 2020-4-26 14:44
妙哉:

{:10_256:}

_2_ 发表于 2020-4-26 20:43:21

zltzlt 发表于 2020-4-26 17:17


反斜杠果然会被吞{:10_256:}
页: [1]
查看完整版本: Python中关于反斜杠的问题