python中的反斜杠问题
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 中的反斜杠匹配的问题
关于反斜杠的匹配问题可以参考: https://www.cnblogs.com/mzc1997/p/7689235.html 文章中提出了两个概念: 字符串转义和正则转义,我觉得是理解反斜杠的关键所在 ...
- python raw String 获取字符串变量中的反斜杠
常用的获取raw string的方式为: >>>r'\n' \n 不能用在字符串变量中,获取字符串变量中的反斜杠如下: tab = '\n' >>>tab.enco ...
- [转载]Python正则表达式匹配反斜杠'\'问题
转载自csdnblog:Python正则表达式匹配反斜杠'\'问题 在学习Python正则式的过程中,有一个问题一直困扰我,如何去匹配一个反斜杠(即“\”)? 一.引入 在学习了Python特殊字符和 ...
- Python: 正则表达式匹配反斜杠 "\"
Python正则表达式匹配反斜杠 "\" eg: >>>a='w\w\w' 'w\\w\\w' # 打印出来的 "\\" 被转义成 一个反斜 ...
- PHP去掉转义后字符串中的反斜杠\函数stripslashes
addslashes函数主要是在字符串中添加反斜杠对特殊字符进行转义,stripslashes则是去掉转义后字符串中的反斜杠\,比如当你提交一段 json数据到PHP端的时候可能会遇到json字符串中 ...
- (转载)PHP去掉转义后字符串中的反斜杠\函数stripslashes
(转载)http://www.beijibear.com/index.php?aid=182 addslashes()函数主要是在字符串中添加反斜杠对特殊字符进行转义,stripslashes()则是 ...
- 黄聪:PHP去掉转义后字符串中的反斜杠\函数stripslashes
addslashes函数主要是在字符串中添加反斜杠对特殊字符进行转义,stripslashes则是去掉转义后字符串中的反斜杠\,比如当你提交一段json数据到PHP端的时候可能会遇到json字符串中有 ...
- 使用java中replaceAll方法替换字符串中的反斜杠
今天在项目中使用java中replaceAll方法将字符串中的反斜杠("\")替换成空字符串(""),结果出现如下的异常: java.util.regex.Pa ...
- 宏定义中的反斜杠"\"和宏定义的细节说明
转载自:http://www.wtoutiao.com/p/K6csca.html 在阅读C语言代码经常可以看到代码中出现反斜杠"\",不是很明白它的意思,遂对反斜杠"\ ...
随机推荐
- IOS Intro - Property Synthesis
http://www.thecodecrate.com/ios/objective-c/objective-c-property-synthesize/ 01. atomic ...
- 性能测试工具LoadRunner13-LR之Virtual User Generator 创建java脚本以及小结
Java vuser是自定义的java虚拟脚本,脚本中可以使用标准的java语言. 环境配置 1.安装jdk(注意:lr11最高支持1.6) 2.配置环境变量 3.在lr选择java Vuser协议 ...
- [原创]hibernate更新后jdbc读取不到数据问题
最近在做工作流插件时使用的是自己基于hibernate连接封装的orm框架,按说跟hibernate共用的一个连接,应该在同一个事务中,但在使用时hibernate saveOrUpdate后(未提交 ...
- spring4 使用websocket
要了解的内容: sockjs,对于低版本的ie等不支持websocket的浏览器,采用js模拟websocket对象的办法来实现兼容(其实也有轮询的情况).sockjs地址 https://githu ...
- JavaScript运算符优先级——"++,--,&&,||“
上篇文章比较了"?,="三者的优先级:"?">"=">"," 今天继续学习"++,--,& ...
- anaular js loadding效果
以前用的jquery的时候,用ajax实现,比较好弄,下面是angularjs的方式: //body下面增加div <div data-loading></div> //dir ...
- ASP.NET WebForm 之 Ajax 请求后端处理
概述 ASP.NET MVC中的异步用途非常广泛,操作起来也非常简单.前台请求异步请求 Controller下的Action 方法,后端返回ActionResult 即可.但是在ASP.NET Web ...
- C语言中的重定向输入
所谓重定向输入,就是不用从键盘一组一组的输入数据,而是保存为一个文件,直接将该程序的测试数据进行输入即可:使用freopen()函数会将标准输入stdin重定向到文件input.txt(这个文件名自己 ...
- 秒懂JSON.parse()与JSON.stringify()的区别
在网站开发中,Json是最为常见的一种数据交互手段.在使用过程中,常会遇到Json字段串和对象之间进行转换.很多朋友对于JSON.parse() 和JSON.stringify() 的区别,下面为大家 ...
- FRM-40654 Record has been updated
该错误是由于界面上对数据进行了修改后(比如为A),将修改前的数据(B)与数据库中的数据(B)进行配不成功时报错: 首先确认Form界面是否有其他人对数据进行修改: 如果无人修改: 将数据库的数据查询出 ...