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 fabric实现远程操作和部署示例
Mar 25 Python
python使用mailbox打印电子邮件的方法
Apr 30 Python
在Python中操作时间之strptime()方法的使用
Dec 30 Python
详解python进行mp3格式判断
Dec 23 Python
Python正则表达式完全指南
May 25 Python
VScode编写第一个Python程序HelloWorld步骤
Apr 06 Python
对pandas replace函数的使用方法小结
May 18 Python
win7+Python3.5下scrapy的安装方法
Jul 31 Python
详解Python3除法之真除法、截断除法和下取整对比
May 23 Python
Pandas透视表(pivot_table)详解
Jul 22 Python
pandas中的数据去重处理的实现方法
Feb 10 Python
基于flask实现五子棋小游戏
May 25 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读取ACCESS数据到MYSQL的代码
2011/05/11 PHP
php array_push()数组函数:将一个或多个单元压入数组的末尾(入栈)
2011/07/12 PHP
PHP实现过滤掉非汉字字符只保留中文字符
2015/06/04 PHP
深入剖析PHP中printf()函数格式化使用
2016/05/23 PHP
PHP获取当前执行php文件名的代码
2017/03/02 PHP
js绑定事件this指向发生改变的问题解决方法
2013/04/23 Javascript
jquery ui dialog实现弹窗特效的思路及代码
2013/08/03 Javascript
删除节点的jquery代码
2014/01/13 Javascript
javascript里绝对用的上的字符分割函数总结
2014/07/31 Javascript
jquery ajax请求方式与提示用户正在处理请稍等
2014/09/01 Javascript
JavaScript获取文本框内选中文本的方法
2015/02/20 Javascript
SpringMVC返回json数据的三种方式
2015/12/10 Javascript
基于Bootstrap使用jQuery实现简单可编辑表格
2016/05/04 Javascript
如何解决IONIC页面底部被遮住无法向上滚动问题
2016/09/06 Javascript
angular基于路由控制ui-router实现系统权限控制
2016/09/27 Javascript
原生JS实现匀速图片轮播动画
2016/10/18 Javascript
jQuery Ajax全解析
2017/02/13 Javascript
js中let和var定义变量的区别
2018/02/08 Javascript
Vue监听数据渲染DOM完以后执行某个函数详解
2018/09/11 Javascript
Vue中使用canvas方法总结
2019/02/12 Javascript
vue配置接口域名方法总结
2019/05/12 Javascript
JavaScript实现简单贪吃蛇效果
2020/03/09 Javascript
[01:21:58]守擂赛DOTA2第一周决赛
2020/04/22 DOTA
利用ctypes提高Python的执行速度
2016/09/09 Python
python模块之time模块(实例讲解)
2017/09/13 Python
python的staticmethod与classmethod实现实例代码
2018/02/11 Python
python3+selenium自动化测试框架详解
2019/03/17 Python
python的time模块和datetime模块实例解析
2019/11/29 Python
python反编译教程之2048小游戏实例
2021/03/03 Python
纯css3制作网站后台管理面板
2014/12/30 HTML / CSS
皮姆斯勒语言学习:Pimsleur Language Programs
2018/06/30 全球购物
Audible英国:有声读物,30天免费试用
2019/10/16 全球购物
公司离职证明范本
2014/01/13 职场文书
高中英语教学反思
2014/02/04 职场文书
公司总经理任命书
2014/06/05 职场文书
七年级上册生物的课件
2019/08/07 职场文书