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实现获取某天是某个月中的第几周
Feb 11 Python
利用python实现xml与数据库读取转换的方法
Jun 17 Python
Windows下安装Django框架的方法简明教程
Mar 28 Python
Python读取txt内容写入xls格式excel中的方法
Oct 11 Python
pandas使用apply多列生成一列数据的实例
Nov 28 Python
Django中ORM外键和表的关系详解
May 20 Python
python实现远程控制电脑
May 23 Python
python打开windows应用程序的实例
Jun 28 Python
Pyspark读取parquet数据过程解析
Mar 27 Python
python 如何将office文件转换为PDF
Sep 22 Python
解决python3输入的坑——input()
Dec 05 Python
Python insert() / append() 用法 Leetcode实战演示
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
1 Tube Radio
2021/03/02 无线电
PHP根据传来的16进制颜色代码自动改变背景颜色
2014/06/13 PHP
php递归实现无限分类的方法
2015/07/28 PHP
php获取汉字拼音首字母的方法
2015/10/21 PHP
php5.2的curl-bug 服务器被php进程卡死问题排查
2016/09/19 PHP
ThinkPHP3.2框架自带分页功能实现方法示例
2019/05/13 PHP
动态为事件添加js代码示例
2009/02/15 Javascript
prototype 学习笔记整理
2009/07/17 Javascript
JavaScript实现多个重叠层点击切换效果的方法
2015/04/24 Javascript
Web安全测试之XSS实例讲解
2016/08/15 Javascript
微信小程序 swiper组件详解及实例代码
2016/10/25 Javascript
vue-dialog的弹出层组件
2020/05/25 Javascript
React Native 通告消息竖向轮播组件的封装
2020/08/25 Javascript
jQuery实现每隔一段时间自动更换样式的方法分析
2018/05/03 jQuery
vue axios 给生产环境和发布环境配置不同的接口地址(推荐)
2018/05/08 Javascript
基于JS实现前端压缩上传图片的实例代码
2019/05/14 Javascript
vue解决花括号数据绑定不成功的问题
2019/10/30 Javascript
VUE+elementui面包屑实现动态路由详解
2019/11/04 Javascript
微信小程序swiper组件实现抖音翻页切换视频功能的实例代码
2020/06/24 Javascript
[54:53]完美世界DOTA2联赛PWL S2 GXR vs PXG 第二场 11.18
2020/11/18 DOTA
Python爬虫实例爬取网站搞笑段子
2017/11/08 Python
用python处理图片实现图像中的像素访问
2018/05/04 Python
python 统计一个列表当中的每一个元素出现了多少次的方法
2018/11/14 Python
python远程邮件控制电脑升级版
2019/05/23 Python
Python实现图像的垂直投影示例
2020/01/17 Python
Python使用GitPython操作Git版本库的方法
2020/02/29 Python
python如何实现图片压缩
2020/09/11 Python
用python计算文件的MD5值
2020/12/23 Python
小学生自我鉴定
2013/10/12 职场文书
高一历史教学反思
2014/01/13 职场文书
党的群众路线教育实践活动对照检查材料
2014/09/22 职场文书
领导班子三严三实心得体会
2014/10/13 职场文书
历史名人教你十五个读书方法,赶快Get起来!
2019/07/18 职场文书
职场领导同事生日简短祝福语
2019/08/06 职场文书
Python+Appium实现自动抢微信红包
2021/05/21 Python
Redis过期数据是否会被立马删除
2022/07/23 Redis