hrp 发表于 2020-3-27 12:08:09

r 原生字符串的理解

本帖最后由 hrp 于 2020-3-27 12:37 编辑

# 为什么
print(r'\')
# 是不合法的


12:37添加:
一个可能的理解:因为在原始字符串中,不会对反斜杠和后面一个字符的组合进行转义,所以反斜杠和紧接的一个单引号都被当成了字符串的一部分,导致整个字符串缺了一个回头的单引号,所以报错。

qiuyouzhi 发表于 2020-3-27 12:14:31

因为这就是Python的语法鸭
先判断一遍末尾有没有\,
再使用原始字符串转义
不用太在意这个

ba21 发表于 2020-3-27 12:15:42

对比下不就 知道了
>>> print(r'\\')
\\
>>> print('\\')
\

hrp 发表于 2020-3-27 12:22:05

qiuyouzhi 发表于 2020-3-27 12:14
因为这就是Python的语法鸭
先判断一遍末尾有没有\,
再使用原始字符串转义


有点不理解原始字符串,不是说在原始字符串中,不会对反斜杠和后面一个字符的组合进行转义的么,为什么最后一个单引号被转义了(是被转义了才报错还是别的原因?{:10_245:})

hrp 发表于 2020-3-27 12:24:41

ba21 发表于 2020-3-27 12:15
对比下不就 知道了
>>> print(r'\\')
\\


有点不理解原始字符串,不是说在原始字符串中,不会对反斜杠和后面一个字符的组合进行转义的么,为什么最后一个单引号被转义了(是被转义了才报错还是别的原因?{:10_245:})

永恒的蓝色梦想 发表于 2020-3-27 12:26:43

hrp 发表于 2020-3-27 12:24
有点不理解原始字符串,不是说在原始字符串中,不会对反斜杠和后面一个字符的组合进行转义的么,为什么最 ...

会对引号转义的哦{:10_248:}

hrp 发表于 2020-3-27 12:39:16

永恒的蓝色梦想 发表于 2020-3-27 12:26
会对引号转义的哦

想到一个可能的理解:因为在原始字符串中,不会对反斜杠和后面一个字符的组合进行转义,所以反斜杠和紧接的一个单引号都被当成了字符串的一部分,导致整个字符串缺了一个回头的单引号,所以报错。

不知道是不是这样。

ba21 发表于 2020-3-27 13:06:19

hrp 发表于 2020-3-27 12:24
有点不理解原始字符串,不是说在原始字符串中,不会对反斜杠和后面一个字符的组合进行转义的么,为什么最 ...

既然是转义字符,后面总得再跟个字符吧。
就算是用r使其失去转义的作用,也得2个字符。这就是语法。

永恒的蓝色梦想 发表于 2020-3-27 13:13:23

hrp 发表于 2020-3-27 12:39
想到一个可能的理解:因为在原始字符串中,不会对反斜杠和后面一个字符的组合进行转义,所以反斜杠和紧接 ...

是的
页: [1]
查看完整版本: r 原生字符串的理解