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 相关文章推荐
使用SAE部署Python运行环境的教程
May 05 Python
Python实现批量下载图片的方法
Jul 08 Python
Python实现的根据IP地址计算子网掩码位数功能示例
May 23 Python
5款Python程序员高频使用开发工具推荐
Apr 10 Python
Django使用Channels实现WebSocket的方法
Jul 28 Python
解析python的局部变量和全局变量
Aug 15 Python
对tensorflow中的strides参数使用详解
Jan 04 Python
Keras之fit_generator与train_on_batch用法
Jun 17 Python
python计算auc的方法
Sep 09 Python
python help函数实例用法
Dec 06 Python
python实现控制台输出颜色
Mar 02 Python
python实现自定义日志的具体方法
May 28 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
关于Appserv无法打开localhost问题的解决方法
2009/10/16 PHP
PHP缩略图等比例无损压缩,可填充空白区域补充色
2011/06/10 PHP
PHP正则表达式匹配替换与分割功能实例浅析
2017/02/04 PHP
thinkPHP5.0框架开发规范简介
2017/03/25 PHP
在textarea中显示html页面的javascript代码
2007/04/20 Javascript
JQuery 网站换肤功能实现代码
2009/11/02 Javascript
最新的10款jQuery内容滑块插件分享
2011/09/18 Javascript
JQuery学习笔录 简单的JQuery
2012/04/09 Javascript
使用js对select动态添加和删除OPTION示例代码
2013/08/12 Javascript
JavaScript判断密码强度(自写代码)
2013/09/06 Javascript
js克隆对象、数组的常用方法介绍
2013/09/26 Javascript
js防止页面被iframe调用的方法
2014/10/30 Javascript
JQuery移动页面开发之屏幕方向改变与滚屏的实现
2015/12/03 Javascript
javascript点击按钮实现隐藏显示切换效果
2016/02/03 Javascript
JavaScript入门教程之引用类型
2016/05/04 Javascript
JS作用域深度解析
2016/12/29 Javascript
js实现日历的简单算法
2017/01/24 Javascript
vue-resourse将json数据输出实例
2017/03/08 Javascript
微信小程序实现手指触摸画板
2018/07/09 Javascript
vue项目部署到Apache服务器中遇到的问题解决
2018/08/24 Javascript
element-ui循环显示radio控件信息的方法
2018/08/24 Javascript
Layui数据表格 前后端json数据接收的方法
2019/09/19 Javascript
python实现简单ftp客户端的方法
2015/06/28 Python
python中子类调用父类函数的方法示例
2017/08/18 Python
Django Web开发中django-debug-toolbar的配置以及使用
2018/05/06 Python
树莓派4B+opencv4+python 打开摄像头的实现方法
2019/10/18 Python
Python类中的装饰器在当前类中的声明与调用详解
2020/04/15 Python
python使用for...else跳出双层嵌套循环的方法实例
2020/05/17 Python
基于python SMTP实现自动发送邮件教程解析
2020/06/02 Python
Python内存泄漏和内存溢出的解决方案
2020/09/26 Python
英国书籍、CD、DVD和游戏的第一道德零售商:Awesome Books
2020/02/22 全球购物
英国礼品和生活方式品牌:Treat Republic
2020/11/21 全球购物
写给女朋友的检讨书
2014/01/28 职场文书
社区服务活动感想
2015/08/11 职场文书
浅谈vue2的$refs在vue3组合式API中的替代方法
2021/04/18 Vue.js
HTML5中 rem适配方案与 viewport 适配问题详解
2021/04/27 HTML / CSS