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使用文件锁实现进程间同步功能【基于fcntl模块】
Oct 16 Python
Python搜索引擎实现原理和方法
Nov 27 Python
Python处理命令行参数模块optpars用法实例分析
May 31 Python
使用Python的Dataframe取两列时间值相差一年的所有行方法
Jul 10 Python
Python使用cx_Freeze库生成msi格式安装文件的方法
Jul 10 Python
Opencv+Python 色彩通道拆分及合并的示例
Dec 08 Python
Python使用pandas和xlsxwriter读写xlsx文件的方法示例
Apr 09 Python
django 微信网页授权认证api的步骤详解
Jul 30 Python
Python中的四种交换数值的方法解析
Nov 18 Python
python logging模块的使用
Sep 07 Python
python 如何利用argparse解析命令行参数
Sep 11 Python
Pytest中skip和skipif的具体使用方法
Jun 30 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
关于PHP模板Smarty的初级使用方法以及心得分享
2013/06/21 PHP
在Yii2中使用Pjax导致Yii2内联脚本载入失败的原因分析
2016/03/06 PHP
javascript同步Import,同步调用外部js的方法
2008/07/08 Javascript
在线一元二次方程计算器实例(方程计算器在线计算)
2013/12/22 Javascript
js中哈希表的几种用法总结
2014/01/28 Javascript
jquery通过select列表选择框对表格数据进行过滤示例
2014/05/07 Javascript
使用script的src实现跨域和类似ajax效果
2014/11/10 Javascript
使用npm发布Node.JS程序包教程
2015/03/02 Javascript
浅析JavaScript中的事件机制
2015/06/04 Javascript
jQuery插件formValidator实现表单验证
2016/05/23 Javascript
jQuery双向列表选择器select版
2016/11/01 Javascript
详解Vue如何支持JSX语法
2017/11/10 Javascript
利用Javascript获取选择文本所在的句子详解
2017/12/03 Javascript
收集前端面试题之url、href、src
2018/03/22 Javascript
Hexo已经看腻了,来手把手教你使用VuePress搭建个人博客
2018/04/26 Javascript
使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)
2018/05/01 Javascript
vuejs使用axios异步访问时用get和post的实例讲解
2018/08/09 Javascript
jQuery简单实现根据日期计算星期几的方法
2019/01/09 jQuery
react使用CSS实现react动画功能示例
2020/05/18 Javascript
让你30分钟快速掌握vue3教程
2020/10/26 Javascript
[40:04]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
python获得linux下所有挂载点(mount points)的方法
2015/04/29 Python
开始着手第一个Django项目
2015/07/15 Python
从CentOS安装完成到生成词云python的实例
2017/12/01 Python
Python编程深度学习计算库之numpy
2018/12/28 Python
python基于SMTP协议发送邮件
2019/05/31 Python
python+django+rest框架配置创建方法
2019/08/31 Python
Python 读取xml数据,cv2裁剪图片实例
2020/03/10 Python
浅谈django不使用restframework自定义接口与使用的区别
2020/07/15 Python
python如何获得list或numpy数组中最大元素对应的索引
2020/11/16 Python
浅谈matplotlib默认字体设置探索
2021/02/03 Python
牦牛毛户外探险服装:Kora
2019/02/08 全球购物
九年级物理教学反思
2014/01/29 职场文书
服务承诺书范文
2014/05/19 职场文书
土建工程师岗位职责
2014/06/10 职场文书
企业财务总监岗位职责
2015/04/03 职场文书