python中的反斜杠问题深入讲解


Posted in Python onAugust 12, 2019

前言

python本身使用 \ 来转义一些特殊字符,比如在字符串中加入引号的时候

s = 'i\'m superman'
print(s) # i'm superman

为了防止和字符串本身的引号冲突,使用 \ 来转义,一般情况下这个也不会引起什么问题,但是当你要使用 \ 来转义 \ 的时候,就比较混乱了,比如我们想要输出一个 \ ,得写两个 \ ,否则会报语法错误,因为 \ 把后面的引号给转义了,必须使用 \

# 错误写法
# print '\'

# 正确写法
print('\\')  # \

# 原生字符串
print(r'\\') # \\

将 \ 转义一下使其不具备转义功能,才可以正确输出,当使用原生字符串的时候,输出显示了两个 \ ,看起来好像是写几个输出几个的样子,如果这样想的话,你可以试一下,看能不能输出奇数个 \。

补充——————————————————

python的原生字符串不能以反斜杠结尾的问题

Python的原生字符串(raw string)是个很有用的东西,可以少写很多反斜线(转义符号)。

不过它有个著名的bug,就是不能以反斜线结尾,这让人很无语。今天突然发现General Python FAQ里有进行说明,并给出了解决办法。

首先要澄清的是不是不能以反斜线结尾,而是不能以奇数个反斜线结尾。

其次,这个bug的原因是一些处理器(例如主要的正则表达式引擎)希望进行它们自己的反斜线转义处理,而这些处理器不允许字符串以未匹配的反斜线结尾。

最后,解决办法就是把反斜线放在另一个字符串里,Python会自动进行合并:

dir = r"\this\is\my\dos\dir" "\\"

补充结束——————————————————

虽然原生字符串不是很完美,但是它已经可以帮我们解决很大一部分的问题了。比如当你想匹配"\"的时候,原生字符串可以让你至少少写一半的\,即节省代码量,又增加了可读性。

import re
_string = '\\\\'
print(_string) # \\

# 字符串
for i in re.findall('\\\\', _string):
  print(i)  
  # \
  # \

# 原生字符串
for i in re.findall(r'\\', _string):
  print(i)  
  # \
  # \

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
python监控网站运行异常并发送邮件的方法
Mar 13 Python
pygame学习笔记(3):运动速率、时间、事件、文字
Apr 15 Python
python查看微信好友是否删除自己
Dec 19 Python
Python实现简单生成验证码功能【基于random模块】
Feb 10 Python
python发送告警邮件脚本
Sep 17 Python
如何使用Python破解ZIP或RAR压缩文件密码
Jan 09 Python
详解python tkinter 图片插入问题
Sep 03 Python
Python timeit模块原理及使用方法
Oct 10 Python
教你一分钟在win10终端成功安装Pytorch的方法步骤
Jan 28 Python
Anaconda配置各版本Pytorch的实现
Aug 07 Python
python实现简单石头剪刀布游戏
Oct 24 Python
Python写情书? 10行代码展示如何把情书写在她的照片里
Apr 21 Python
Django CBV与FBV原理及实例详解
Aug 12 #Python
Python利用requests模块下载图片实例代码
Aug 12 #Python
django+tornado实现实时查看远程日志的方法
Aug 12 #Python
Django结合ajax进行页面实时更新的例子
Aug 12 #Python
django fernet fields字段加密实践详解
Aug 12 #Python
利用pyecharts实现地图可视化的例子
Aug 12 #Python
django echarts饼图数据动态加载的实例
Aug 12 #Python
You might like
mysql 中InnoDB和MyISAM的区别分析小结
2008/04/15 PHP
10个简化PHP开发的工具
2014/12/25 PHP
PHP开发APP端微信支付功能
2017/02/17 PHP
PHP使用Curl实现模拟登录及抓取数据功能示例
2018/04/27 PHP
yii2中关于加密解密的那些事儿
2018/06/12 PHP
jquery 多行滚动代码(附详细解释)
2010/06/17 Javascript
基于jquery的loading 加载提示效果实现代码
2011/09/01 Javascript
Javascript写入txt和读取txt文件示例
2014/02/12 Javascript
extjs 分页使用jsp传递数据示例
2014/07/29 Javascript
jQuery中[attribute]选择器用法实例
2014/12/31 Javascript
实例解析jQuery中proxy()函数的用法
2016/05/24 Javascript
jQuery中show与hide方法用法示例
2016/09/16 Javascript
详解vue2 $watch要注意的问题
2017/09/08 Javascript
基于JavaScript实现报警器提示音效果
2017/10/27 Javascript
Angular4实现图片上传预览路径不安全的问题解决
2017/12/25 Javascript
angularjs 获取默认选中的单选按钮的value方法
2018/02/28 Javascript
vue项目使用axios发送请求让ajax请求头部携带cookie的方法
2018/09/26 Javascript
jQuery实现的鼠标拖动浮层功能示例【拖动div等任何标签】
2018/12/29 jQuery
基于jQuery实现可编辑的表格
2019/12/11 jQuery
[05:31]DOTA2上海特级锦标赛主赛事第三日RECAP
2016/03/05 DOTA
[01:23:45]DOTA2-DPC中国联赛 正赛 CDEC vs Dragon BO3 第一场 1月22日
2021/03/11 DOTA
Python中实现单例模式的n种方式和原理
2018/11/14 Python
Python常见数据结构之栈与队列用法示例
2019/01/14 Python
Python爬虫使用浏览器cookies:browsercookie过程解析
2019/10/22 Python
在spyder IPython console中,运行代码加入参数的实例
2020/04/20 Python
基于Python爬取股票数据过程详解
2020/10/21 Python
从Pytorch模型pth文件中读取参数成numpy矩阵的操作
2021/03/04 Python
HTML5混合开发二维码扫描以及调用本地摄像头
2017/12/27 HTML / CSS
好药师网上药店:安全合法的网上药品零售药房
2017/02/15 全球购物
台湾演唱会订票网站:StubHub台湾
2019/06/11 全球购物
商务英语毕业生自荐信范文
2013/11/08 职场文书
小型女装店的创业计划书
2014/01/09 职场文书
小学语文继续教育研修日志
2015/11/13 职场文书
新学期开学寄语2016
2015/12/04 职场文书
JavaScript实现贪吃蛇游戏
2021/06/16 Javascript
win11怎么消除图标小盾牌?win11消除图标小盾牌解决方法
2022/08/05 数码科技