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中 chr unichr ord函数的实例详解
Aug 06 Python
python编写弹球游戏的实现代码
Mar 12 Python
如何使用 Pylint 来规范 Python 代码风格(来自IBM)
Apr 06 Python
Python调用adb命令实现对多台设备同时进行reboot的方法
Oct 15 Python
python 函数中的内置函数及用法详解
Jul 02 Python
python使用百度文字识别功能方法详解
Jul 23 Python
Python大数据之从网页上爬取数据的方法详解
Nov 16 Python
使用python处理题库表格并转化为word形式的实现
Apr 14 Python
python中rc1什么意思
Jun 19 Python
python中numpy.empty()函数实例讲解
Feb 05 Python
【超详细】八大排序算法的各项比较以及各自特点
Mar 31 Python
Python开发之QT解决无边框界面拖动卡屏问题(附带源码)
May 27 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和JavaScrip分别获取关联数组的键值示例代码
2013/09/16 PHP
php格式化日期和时间格式化示例分享
2014/02/24 PHP
Gird事件机制初级读本
2007/03/10 Javascript
jQuery EasyUI 中文API Layout(Tabs)
2010/04/27 Javascript
JS如何设置cookie有效期为当天24点并弹出欢迎登陆界面
2016/08/04 Javascript
Es6 写的文件import 起来解决方案详解
2016/12/13 Javascript
JS组件系列之Gojs组件 前端图形化插件之利器
2017/11/29 Javascript
Javascript中JSON数据分组优化实践及JS操作JSON总结
2017/12/22 Javascript
使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)
2018/05/01 Javascript
更改BootStrap popover的默认样式及popover简单用法
2018/09/13 Javascript
Javascript读写cookie的实例源码
2019/03/16 Javascript
详解新手使用vue-router传参时注意事项
2019/06/06 Javascript
vue + typescript + 极验登录验证的实现方法
2019/06/27 Javascript
如何解决日期函数new Date()浏览器兼容性问题
2019/09/11 Javascript
js中apply和call的理解与使用方法
2019/11/27 Javascript
安装多版本Vue-CLI的实现方法
2020/03/24 Javascript
vue同个按钮控制展开和折叠同个事件操作
2020/07/29 Javascript
js实现页面导航层级指示效果
2020/08/25 Javascript
[37:35]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第二局
2016/02/25 DOTA
深入源码解析Python中的对象与类型
2015/12/11 Python
Python3生成手写体数字方法
2018/01/30 Python
python计算n的阶乘的方法代码
2019/10/25 Python
用python解压分析jar包实例
2020/01/16 Python
python中文分词库jieba使用方法详解
2020/02/11 Python
分享CSS3中必须要知道的10个顶级命令
2012/04/26 HTML / CSS
英国厨房与餐具用品为主的设计品牌:Joseph Joseph
2018/04/26 全球购物
Unineed中文官网:高端护肤美妆与时尚配饰,英国直邮
2020/07/23 全球购物
如何估计一张表的大小(假设该表中有1万条数据)
2016/03/27 面试题
生产内勤岗位职责
2013/12/07 职场文书
网吧消防安全制度
2014/01/28 职场文书
村党支部书记四风问题个人对照检查材料思想汇报
2014/10/06 职场文书
2014年安全工作总结范文
2014/11/13 职场文书
工作收入证明范本
2015/06/12 职场文书
我的中国梦心得体会范文
2016/01/05 职场文书
Python Django模型详解
2021/10/05 Python
ant design vue的form表单取值方法
2022/06/01 Vue.js