python 中的反斜杠匹配的问题
关于反斜杠的匹配问题可以参考:
https://www.cnblogs.com/mzc1997/p/7689235.html
文章中提出了两个概念: 字符串转义和正则转义,我觉得是理解反斜杠的关键所在
1. 字符串转义
在一个字符串中 因为有\n\t 等特殊含义的字符存在,所以字符“\” 是转义字符(字符串转义),如果要取消其转义属性有两种方式:
1)再加一个转义字符:'\\'
2)使用原始字符串:r'\'
2. 正则转义
正则表达式中,因为有\d,\s 等表示特殊意义的字符存在,所以正则表达式中的“\” 也表示转义(正则转义),如果要取消其转义属性只有一种方式:
用两个'\'
其实Perl 正则表达式中匹配'\' 的确是用的‘\\’.
那么匹配'\' 的正则表达就很好理解了,因为正则表达式同时也是字符串,所以既要有字符转义,又要有正则表达式转义, 那就有两种方式:
'\\\\' 和
r'\\'
将字符串中的\\ 替换为\
a=r'3\\8\\9' print(a) 3\\8\\9 c=re.sub(r'\\\\','\\\\',a) c
Out[213]: '3\\8\\9' print (c)
3\8\9
举例:
再举一个反斜杠的例子,这是在用bs 抓取网页后得到字符串d 再将其转换成字典
d=soup.find('div',{'class':'page-box house-lst-page-box'}).get('page-data')
print("original is ",d," type is ",type(d))
print("asic code is ",d.encode('ascii'))
d=d.encode('ascii').decode('unicode-escape')
print("before is ",d," type is ",type(d))
d=re.sub(r"'",'',d)
print("after sub is ", d," type is ",type(d))
exec(d)
print("after exec is ", d," type is ",type(d))
a=eval(d)
print("after eval is ", a," type is ",type(a))
得到的结果如下:
原始得到的字符串中包含了'\', 这个反斜杠是为了转义', 将其转换为ascii code 发现的确原始字符串用了双斜杠,并且在‘ 前也用了斜杠表示转义。
通过d.encode(''asii').decode('unicode-escape') 可以将原始字符串中的斜杠去掉。
但是字符串中还包含了单引号,用sub 将其去掉。
执行eval 后被转换成字典格式。
original is \'{"totalPage":2,"curPage":1}\' type is <class 'str'>
asic code is b'\\\'{"totalPage":2,"curPage":1}\\\''
before is '{"totalPage":2,"curPage":1}' type is <class 'str'>
after sub is {"totalPage":2,"curPage":1} type is <class 'str'>
after exec is {"totalPage":2,"curPage":1} type is <class 'str'>
after eval is {'totalPage': 2, 'curPage': 1} type is <class 'dict'>
strip() 和replace()
删除字符串中的换行, replace('\n','')
删除字符串首尾的空格, strip()
python 中的反斜杠匹配的问题的更多相关文章
- python中的反斜杠问题
python本身使用 \ 来转义一些特殊字符,比如在字符串中加入引号的时候 s = 'i\'m superman' print(s) # i'm superman 为了防止和字符串本身的引号冲突,使用 ...
- python raw String 获取字符串变量中的反斜杠
常用的获取raw string的方式为: >>>r'\n' \n 不能用在字符串变量中,获取字符串变量中的反斜杠如下: tab = '\n' >>>tab.enco ...
- String.replaceAll()方法替换字符串中的反斜杠(\)
replaceAll()方法实际是采用正则表达式的规则去匹配的. 在regex中"\\"表示一个"\",在java中一个"\"也要用&quo ...
- 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语言代码经常可以看到代码中出现反斜杠"\",不是很明白它的意思,遂对反斜杠"\ ...
- java中replaceAll反斜杠\ or java中replaceAll 括号[
java中replaceAll反斜杠\ String s=new String("this is a \\"); s.replaceAll("\\",&qu ...
随机推荐
- 1068 万绿丛中一点红 (20分)C语言
对于计算机而言,颜色不过是像素点对应的一个 24 位的数值.现给定一幅分辨率为 M×N 的画,要求你找出万绿丛中的一点红,即有独一无二颜色的那个像素点,并且该点的颜色与其周围 8 个相邻像素的颜色差充 ...
- Linux 下解压.tar.gz文件报错 gzip:stdin:not in gzip format 的解决办法!
[root@hzp124 opt]# tar xzvf 1577255462-qypt.tar gzip: stdin: not in gzip formattar: Child returned s ...
- ENS使用指南系列之一 [ 注册 .eth 域名详细教程 ]
ENS 域名系统中目前支持三种顶级域名,分别是 .eth .xyz .luxe.其中, .eth 是 ENS 系统的原生域名,是由一系列智能合约控制的去中心化的域名,另外两种是从互联网域名中接入的,要 ...
- UML之类之间的关系
UML 简介 统一建模语言(Unified Modeling Language,UML) 作用:对软件系统进行说明 如果说软件系统是一本小说的话,那么 UML 就是将小说动漫化. 也许你看过这本小说, ...
- uni app canvas 不生效
canvas 创建canvas绘图上下文. <canvas style="width: 300px; height: 200px;" canvas-id="firs ...
- Java Collection集合概述及其常用方法
Collection集合概述 Java数组的长度是固定的,为了使程序能够方便地存储和操作数目不固定的一组数据,JDK类库提供了Java集合 与数组不同的是,集合中不能存放基本类型数据,而只能存放对象的 ...
- # 曹工说Spring Boot源码(10)-- Spring解析xml文件,到底从中得到了什么(context:annotation-config 解析)
写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean ...
- Spring Boot2 系列教程 (十五) | 服务端参数校验之一
估计很多朋友都认为参数校验是客户端的职责,不关服务端的事.其实这是错误的,学过 Web 安全的都知道,客户端的验证只是第一道关卡.它的参数验证并不是安全的,一旦被有心人抓到可乘之机,他就可以有各种方法 ...
- 贪心 + DFS
A New Year party is not a New Year party without lemonade! As usual, you are expecting a lot of gues ...
- 聊一聊 InnoDB 引擎中的索引类型
索引对数据库有多重要,我想大家都已经知道了吧,关于索引可能大家会对它多少有一些误解,首先索引是一种数据结构,并且索引不是越多越好.合理的索引可以提高存储引擎对数据的查询效率. 形象一点来说呢,索引跟书 ...