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查找指定具有相同内容文件的方法
Jun 28 Python
python自带的http模块详解
Nov 06 Python
Python 中Pickle库的使用详解
Feb 24 Python
Python多继承顺序实例分析
May 26 Python
对python插入数据库和生成插入sql的示例讲解
Nov 14 Python
python 列表输出重复值以及对应的角标方法
Jun 11 Python
pandas中DataFrame修改index、columns名的方法示例
Aug 02 Python
jupyter notebook中新建cell的方法与快捷键操作
Apr 22 Python
Python while true实现爬虫定时任务
Jun 08 Python
聊聊python中的循环遍历
Sep 07 Python
简单了解python关键字global nonlocal区别
Sep 21 Python
基于python实现百度语音识别和图灵对话
Nov 02 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 json_encode()函数返回json数据实例代码
2014/10/10 PHP
php设计模式之单例模式实例分析
2015/02/25 PHP
关于PHP定时发送服务的解决办法
2017/04/23 PHP
PHP实现从上往下打印二叉树的方法
2018/01/18 PHP
php实现的支付宝网页支付功能示例【基于TP5框架】
2019/09/16 PHP
phpfpm的作用和用法
2019/10/10 PHP
laravel框架中控制器的创建和使用方法分析
2019/11/23 PHP
关于取不到由location.href提交而来的上级页面地址的解决办法
2009/07/30 Javascript
js汉字转拼音实现代码
2013/02/06 Javascript
javascript使用onclick事件改变选中行的颜色
2013/12/30 Javascript
js时间日期格式化封装函数
2014/12/02 Javascript
js动态生成Html元素实现Post操作(createElement)
2015/09/14 Javascript
JS组件系列之MVVM组件 vue 30分钟搞定前端增删改查
2017/04/28 Javascript
小程序实现带年月选取效果的日历
2018/06/27 Javascript
js实现全选和全不选功能
2020/07/28 Javascript
Vue实现穿梭框效果
2020/09/30 Javascript
用Python脚本生成Android SALT扰码的方法
2013/09/18 Python
解决python2.7 查询mysql时出现中文乱码
2016/10/09 Python
详解Appium+Python之生成html测试报告
2019/01/04 Python
python3+selenium实现qq邮箱登陆并发送邮件功能
2019/01/23 Python
Python sys模块常用方法解析
2020/02/20 Python
Python 制作查询商品历史价格的小工具
2020/10/20 Python
python实现经典排序算法的示例代码
2021/02/07 Python
办公室内勤岗位职责范本
2013/12/09 职场文书
消防战士优秀事迹材料
2014/02/13 职场文书
《鞋匠的儿子》教学反思
2014/03/02 职场文书
农林环境专业求职信
2014/03/13 职场文书
爱的奉献演讲稿
2014/09/10 职场文书
党员群众路线整改措施及今后努力方向
2014/10/28 职场文书
干部年终考核评语
2015/01/04 职场文书
楚门的世界观后感
2015/06/03 职场文书
2015年国庆节标语大全
2015/07/30 职场文书
小学六年级毕业感言
2015/07/30 职场文书
2019年工作总结范文
2019/05/21 职场文书
关于考试抄袭的检讨书
2019/11/02 职场文书
八年级作文之感悟亲情
2019/11/20 职场文书