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定时检查启动某个exe程序适合检测exe是否挂了
Jan 21 Python
Python中type的构造函数参数含义说明
Jun 21 Python
python学习 流程控制语句详解
Jun 01 Python
centos6.7安装python2.7.11的具体方法
Jan 16 Python
Python简单实现两个任意字符串乘积的方法示例
Apr 12 Python
python3+PyQt5 实现Rich文本的行编辑方法
Jun 17 Python
python接口自动化如何封装获取常量的类
Dec 24 Python
TensorFlow实现自定义Op方式
Feb 04 Python
PHP基于phpqrcode类库生成二维码过程解析
May 28 Python
pytorch SENet实现案例
Jun 24 Python
matplotlib基础绘图命令之errorbar的使用
Aug 13 Python
Python中return函数返回值实例用法
Nov 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
PHP程序漏洞产生的原因分析与防范方法说明
2014/03/06 PHP
PHPThumb图片处理实例
2014/05/03 PHP
学习php设计模式 php实现原型模式(prototype)
2015/12/07 PHP
数组Array进行原型prototype扩展后带来的for in遍历问题
2010/02/07 Javascript
Extjs Gird 支持中文拼音排序实现代码
2013/04/15 Javascript
JavaScript数组深拷贝和浅拷贝的两种方法
2014/04/16 Javascript
Javascript学习笔记之数组的遍历和 length 属性
2014/11/23 Javascript
jQuery中:has选择器用法实例
2014/12/30 Javascript
jquery操作select方法汇总
2015/02/05 Javascript
jQuery实时显示鼠标指针位置和键盘ASCII码
2016/03/28 Javascript
JavaScript中的各种操作符使用总结
2016/05/26 Javascript
Javascript基础学习笔记(菜鸟必看篇)
2016/07/22 Javascript
Vue.use源码学习小结
2018/06/20 Javascript
利用js将ajax获取到的后台数据动态加载至网页中的方法
2018/08/08 Javascript
Vue实现数据表格合并列rowspan效果
2020/11/30 Javascript
解决LayUI加上form.render()下拉框和单选以及复选框不出来的问题
2019/09/27 Javascript
Vue自定义组件双向绑定实现原理及方法详解
2020/09/03 Javascript
[58:18]2018DOTA2亚洲邀请赛3月29日 小组赛B组 iG VS Mineski
2018/03/30 DOTA
[43:03]LGD vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
python获取外网IP并发邮件的实现方法
2017/10/01 Python
详解TensorFlow在windows上安装与简单示例
2018/03/05 Python
如何在python字符串中输入纯粹的{}
2018/08/22 Python
PyQt5实现简单数据标注工具
2019/03/18 Python
Python自动抢红包教程详解
2019/06/11 Python
Python调用Windows API函数编写录音机和音乐播放器功能
2020/01/05 Python
Python利用全连接神经网络求解MNIST问题详解
2020/01/14 Python
CSS3实现可翻转的hover效果
2018/05/23 HTML / CSS
html5指南-2.如何操作document metadata
2013/01/07 HTML / CSS
绘画设计学生的个人自我评价
2013/09/20 职场文书
认识深刻的检讨书
2014/02/16 职场文书
大四学生找工作的自荐信
2014/03/27 职场文书
事业单位考核材料
2014/05/21 职场文书
转让协议书范本
2014/09/13 职场文书
钳工实训报告总结
2014/11/04 职场文书
导游词之金鞭溪风景区
2019/09/12 职场文书
PostgreSQL通过oracle_fdw访问Oracle数据的实现步骤
2021/05/21 PostgreSQL