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 相关文章推荐
pygame学习笔记(3):运动速率、时间、事件、文字
Apr 15 Python
在Python中使用poplib模块收取邮件的教程
Apr 29 Python
Python数据结构之翻转链表
Feb 25 Python
Python测试网络连通性示例【基于ping】
Aug 03 Python
Python如何发布程序的详细教程
Oct 09 Python
python执行精确的小数计算方法
Jan 21 Python
详解Python的循环结构知识点
May 20 Python
Python语言异常处理测试过程解析
Jan 08 Python
Django中ORM找出内容不为空的数据实例
May 20 Python
学生如何注册Pycharm专业版以及pycharm的安装
Sep 24 Python
Python爬虫实战之爬取携程评论
Jun 02 Python
Python利用zhdate模块实现农历日期处理
Mar 31 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
追忆往昔!浅谈收音机的百年发展历史
2021/03/01 无线电
用PHP连mysql和oracle数据库性能比较
2006/10/09 PHP
php格式化工具Beautify PHP小小BUG
2008/04/24 PHP
php Static关键字实用方法
2010/06/04 PHP
php递归删除目录下的文件但保留的实例分享
2014/05/10 PHP
分享一则PHP定义函数代码
2015/02/26 PHP
手把手编写PHP框架 深入了解MVC运行流程
2016/09/19 PHP
解析PHP之提取多维数组指定列的方法
2017/01/03 PHP
mongodb和php的用法详解
2019/03/25 PHP
解决tp5在nginx下修改配置访问的问题
2019/10/16 PHP
jquery json 实例代码
2010/12/02 Javascript
jquery随机展示头像代码
2011/12/21 Javascript
在Ubuntu系统上安装Ghost博客平台的教程
2015/06/17 Javascript
灵活使用数组制作图片切换js实现
2016/07/28 Javascript
AngularJS 基础ng-class-even指令用法
2016/08/01 Javascript
Bootstrap Table表格一直加载(load)不了数据的快速解决方法
2016/09/17 Javascript
jquery dataview数据视图插件使用方法
2016/12/23 Javascript
jQuery实现遮罩层登录对话框
2016/12/29 Javascript
微信小程序 选项卡的简单实例
2017/05/24 Javascript
angularjs2 ng2 密码隐藏显示的实例代码
2017/08/01 Javascript
AngularJS实现的简单拖拽功能示例
2018/01/02 Javascript
vue watch普通监听和深度监听实例详解(数组和对象)
2018/08/16 Javascript
基于element-ui组件手动实现单选和上传功能
2018/12/06 Javascript
详解vue2.0模拟后台json数据
2019/05/16 Javascript
原生js实现针对Dom节点的CRUD操作示例
2019/08/26 Javascript
[44:33]EG vs Liquid 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python数据批量写入ScrolledText的优化方法
2018/10/11 Python
创建Django项目图文实例详解
2019/06/06 Python
new_zeros() pytorch版本的转换方式
2020/02/18 Python
电大自我鉴定范文
2013/10/01 职场文书
市场营销毕业生自荐信
2013/11/23 职场文书
2014春晚主持词
2014/03/25 职场文书
文秘自荐信
2014/06/28 职场文书
酒店办公室主任岗位职责
2015/04/01 职场文书
八月迷情观后感
2015/06/11 职场文书
关于python爬虫应用urllib库作用分析
2021/09/04 Python