回复 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编辑过]