| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2066 人关注过本帖
标题:关于\的问题
只看楼主 加入收藏
fall_bernana
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:17
帖 子:244
专家分:2106
注 册:2019-8-16
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
关于\的问题
程序代码:
>>> a="\'"
>>> a
"'"
>>> a="\\\'"
>>> a
"\\'"
>>> a="\\\\'"
>>> a
"\\\\'"
>>> a="\\\\\'"
>>> a
"\\\\'"
>>> a="\\\\\\'"
>>> a
"\\\\\\'"
>>> a="\\\\\\\'"
>>> a
"\\\\\\'"
>>> a="\\\\\\\\'"
>>> a
"\\\\\\\\'"

这里的\为什么只会出现双数,不会有单数的情况?
我在re.sub(r'\\','\\\\',a) 里 想把一个\改成2个\,但是失败了.这个该怎么写?

[此贴子已经被作者于2019-8-16 17:45编辑过]

搜索更多相关主题的帖子: 出现 sub 失败 
2019-08-16 17:42
TysonKoothra
Rank: 5Rank: 5
等 级:职业侠客
威 望:7
帖 子:71
专家分:374
注 册:2018-10-21
收藏
得分:20 
用print就看出来单数的情况了。
程序代码:
>>> print('\\')
\
>>> print('\\\\')
\\
>>> print('\\\\\\')
\\\
2019-08-16 20:57
TysonKoothra
Rank: 5Rank: 5
等 级:职业侠客
威 望:7
帖 子:71
专家分:374
注 册:2018-10-21
收藏
得分:0 
re.sub(r'\\','\\\\',a) 第二个参数少一个r。re.sub(r'\\',r'\\\\',a)
2019-08-16 21:20
fall_bernana
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:17
帖 子:244
专家分:2106
注 册:2019-8-16
收藏
得分:0 
回复 3楼 TysonKoothra
版主的答案是对的,但是原因没有讲透.我检测如下,希望指正

re.sub(pattern, repl, string, count=0, flags=0)
程序代码:
>>> a='Morton\\\'s'
>>> print (a)
Morton\'s

>>> b=re.sub(r'([\\]\')',r'\\\\\'\j\?\.',a)
>>> print(b)
Morton\\\'\j\?\.s


#在pattern里,\\会解释成\,\'会解释成' ,但是在repl里,如果使用r'' , 表达式会把\\解释成一个\,\'解释成\',\j解释成\j.
#所以我的问题可以用b=re.sub(r'([\\]\')',r'\\\'',a)来解决


>>> c='\'\j\?\.'
>>> print (c)
'\j\?\.
>>> b=re.sub(r'(\\\')','\'\j\?\.',a)
>>> print(b)
Morton'\j\?\.s
----------------------------------
>>> c='\\\'\j\?\.'
>>> print (c)
\'\j\?\.
>>> b=re.sub(r'(\\\')','\\\'\j\?\.',a)
>>> print (b)
Morton\'\j\?\.s
-----------------------------------
>>> c='\\\\\'\j\?\.'
>>> print (c)
\\'\j\?\.
>>> b=re.sub(r'(\\\')','\\\\\'\j\?\.',a)
>>> print (b)
Morton\'\j\?\.s
-----------------------------------
>>> c='\\\\\\\'\j\?\.'
>>> print (c)
\\\'\j\?\.
>>> b=re.sub(r'(\\\')','\\\\\\\'\j\?\.',a)
>>> print (b)
Morton\\'\j\?\.s
------------------------------------

从这里总结出,在如果不使用r'' ,repl会先转成字符串,这里\'会转成' ,也就是先转成c的值,再在c的基础上\\转成\, \'转成\' .

希望这个对跟我碰到相同问题的人有点帮助.多谢版主

[此贴子已经被作者于2019-8-19 10:58编辑过]

2019-08-19 10:47
快速回复:关于\的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023210 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved