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(Tornado)模拟登录小米抢手机
Nov 12 Python
python实现JAVA源代码从ANSI到UTF-8的批量转换方法
Aug 10 Python
python实现简易通讯录修改版
Mar 13 Python
Python中使用Counter进行字典创建以及key数量统计的方法
Jul 06 Python
Python爬虫框架scrapy实现的文件下载功能示例
Aug 04 Python
django进阶之cookie和session的使用示例
Aug 17 Python
对python requests的content和text方法的区别详解
Oct 11 Python
python统计字符的个数代码实例
Feb 07 Python
关于python 的legend图例,参数使用说明
Apr 17 Python
使用Tensorflow-GPU禁用GPU设置(CPU与GPU速度对比)
Jun 30 Python
python实现银行账户系统
Feb 22 Python
python 如何将两个实数矩阵合并为一个复数矩阵
May 19 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
有关phpmailer的详细介绍及使用方法
2013/01/28 PHP
php引用返回与取消引用的详解
2013/06/08 PHP
php另类上传图片的方法(PHP用Socket上传图片)
2013/10/30 PHP
php页码形式分页函数支持静态化地址及ajax分页
2014/03/28 PHP
php数字运算验证码的实现代码
2015/07/30 PHP
一句话JavaScript表单验证代码
2009/08/02 Javascript
Jquery 类网页微信二维码图块滚动效果具体实现
2013/10/14 Javascript
javaScript如何生成xmlhttp
2013/12/16 Javascript
jQuery制作仿Mac Lion OS滚动条效果
2015/02/10 Javascript
JS实现关闭当前页而不弹出提示框的方法
2016/06/22 Javascript
jQuery实现的placeholder效果完整实例
2016/08/02 Javascript
HTML页面,测试JS对C函数的调用简单实例
2016/08/09 Javascript
jQuery事件绑定用法详解
2016/09/08 Javascript
基于Marquee.js插件实现的跑马灯效果示例
2017/01/25 Javascript
javascript实现鼠标点击生成文字特效
2019/12/24 Javascript
JS实现拖动模糊框特效
2020/08/25 Javascript
[49:40]2018DOTA2亚洲邀请赛小组赛 A组加赛 TNC vs Newbee
2018/04/03 DOTA
Python使用pylab库实现画线功能的方法详解
2017/06/08 Python
numpy.random.seed()的使用实例解析
2018/02/03 Python
利用Python批量提取Win10锁屏壁纸实战教程
2018/03/27 Python
python得到电脑的开机时间方法
2018/10/15 Python
python命令行参数用法实例分析
2019/06/25 Python
Django组件content-type使用方法详解
2019/07/19 Python
pytorch 实现tensor与numpy数组转换
2019/12/27 Python
python torch.utils.data.DataLoader使用方法
2020/04/02 Python
用CSS3和table标签实现一个圆形轨迹的动画的示例代码
2019/01/17 HTML / CSS
html5仿支付宝密码框的实现代码
2017/09/06 HTML / CSS
法国时尚童装网站:Melijoe
2016/08/10 全球购物
全球酒店比价网:HotelsCombined
2017/06/20 全球购物
农村婚礼主持词
2014/03/13 职场文书
《美丽的丹顶鹤》教学反思
2014/04/22 职场文书
员工安全承诺书
2014/05/22 职场文书
汽车4S店销售经理岗位职责
2015/04/02 职场文书
nginx限制并发连接请求数的方法
2021/04/01 Servers
Java中CyclicBarrier和CountDownLatch的用法与区别
2021/08/23 Java/Android
分享几个简单MySQL优化小妙招
2022/03/31 MySQL