鱼C论坛

 找回密码
 立即注册
查看: 1868|回复: 11

[已解决]新书有些地方不好理解

[复制链接]
发表于 2020-8-23 15:37:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
>>>str = r'C:\Program Files\FishC\Good''\\'   
这个代码为什么不是 >>>str = r'C:\Program Files\FishC\Good\\'这样呢?
最佳答案
2020-8-23 18:15:40
微可乐Yu 发表于 2020-8-23 17:47
r 只对第一个字符串起作用是嘛

是的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-8-23 15:39:20 | 显示全部楼层
本帖最后由 Twilight6 于 2020-8-23 15:40 编辑



因为 r 会自动转义字符串里面的内容,而 r'C:\Program Files\FishC\Good\\'

这样会使得 r 将代码中的 \ 转义输出,导致输出时候出现四个 \\\\ 了

你去掉 r 就行直接 'C:\Program Files\FishC\Good\\' 了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-23 15:58:33 | 显示全部楼层
Twilight6 发表于 2020-8-23 15:39
因为 r 会自动转义字符串里面的内容,而 r'C:\Program Files\FishC\Good\\'

这样会使得 r 将代码中 ...

转义是什么意思? 你这个代码不用r  也就是说不用r也能打出\  只要\后面不出现n就行吗?
'C:\Program Files\FishC\Good\\' 这个代码后面这个反斜是转移哪个符号的?
在原始字符串后面加反斜 是个>>>str = r'C:\Program Files\FishC\Good''\\'   后面这些符号又怎么理解呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-23 16:06:58 | 显示全部楼层
微可乐Yu 发表于 2020-8-23 15:58
转义是什么意思? 你这个代码不用r  也就是说不用r也能打出\  只要\后面不出现n就行吗?
'C:\Program F ...



字符串末尾直接一个 \ Python 会认为是你要将末尾的 ' 单引号转义导致报错,你 \\ 杠就是将 \ 转义了使得不会将 单引号给你转义掉
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-23 16:12:18 | 显示全部楼层
微可乐Yu 发表于 2020-8-23 15:58
转义是什么意思? 你这个代码不用r  也就是说不用r也能打出\  只要\后面不出现n就行吗?
'C:\Program F ...

转义是什么意思? 你这个代码不用r  也就是说不用r也能打出\  只要\后面不出现n就行吗?


比如  \n 原来是表换行作用,但是你加上转义字符 \\n 就会将 \ 原有的功能转义了,就使得你是想打印 \ 而不是想使用 \n 换行符

只要\后面不出现n就行吗?


如果 \ 后面不出现特殊功能字符,就没事,n、r、t 啥的,嫌这些麻烦可以直接用三引号或者直接单独 \ 转义呗

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-23 16:42:49 | 显示全部楼层
Twilight6 发表于 2020-8-23 16:12
比如  \n 原来是表换行作用,但是你加上转义字符 \\n 就会将 \ 原有的功能转义了,就使得你是想打印  ...

原始字符串末尾加\  
r'C:\now\sd\s''\\' 后面反斜前又加俩单引号 是为什么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-23 17:24:07 | 显示全部楼层
微可乐Yu 发表于 2020-8-23 16:42
原始字符串末尾加\  
r'C:\now\sd\s''\\' 后面反斜前又加俩单引号 是为什么?



Python 直接把两个字符串中间没有空格的放一起会相当于 + 号将两个字符串拼接起来而已
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-23 17:47:13 | 显示全部楼层
Twilight6 发表于 2020-8-23 17:24
Python 直接把两个字符串中间没有空格的放一起会相当于 + 号将两个字符串拼接起来而已

r 只对第一个字符串起作用是嘛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-23 18:14:39 | 显示全部楼层
本帖最后由 深山小兽 于 2020-8-23 18:22 编辑

r在第一对单引号前面的作用是转义\,使所有\前面再出现一个斜杠,达到转义\的意思。最后两个\\单独用单引号括起来因为字符串最后出现\会报错,这里单独用斜杠对斜杆转义。就可以在字符串最后显示斜杠了。不信,你用print打印试试,一定显示这样的。
>>> str = r'C:\Program Files\FishC\Good''\\'
>>> str
'C:\\Program Files\\FishC\\Good\\'
>>> print(str)
C:\Program Files\FishC\Good\

不用r就要每个斜杠前再加一个斜杠,因为斜杠本身是转义符号,不会直接打印出来的。为了减少输入和提高效率,我们习惯在前面加一个r输入,r就是在所有斜杠前面分别再加一个斜杆的意思。最后两个斜杠分开用单引号括起来,理由就是字符串最后不能出现斜杠,不然就会报错。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-8-23 18:15:40 | 显示全部楼层    本楼为最佳答案   
微可乐Yu 发表于 2020-8-23 17:47
r 只对第一个字符串起作用是嘛

是的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-23 18:20:27 | 显示全部楼层
深山小兽 发表于 2020-8-23 18:14
r在第一对单引号前面的作用是转义\,使所有\前面再出现一个斜杠,达到转义\的意思。最后两个\\单独用单引号 ...

不用r就要每个斜杠前再加一个斜杠,因为斜杠本身是转义符号,不会直接打印出来的。为了减少输入和提高效率,我们习惯在前面加一个r输入,r就是在所有斜杠前面分别再加一个斜杆的意思。最后两个斜杠分开用单引号括起来,理由就是字符串最后不能出现斜杠,不然就会报错。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-24 21:41:19 | 显示全部楼层
\ 是转义符,\\(转 转义符)。如果不用r,你每个 \ 前都要加个 \ 来转义。
如果听着比较绕的话,建议先去了解下什么叫字符串转义符,你就明白了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-11 05:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表