pyf*_*unc 180
使用re.escape
>>> import re
>>> re.escape(r'\ a.*$')
'\\\\\\ a\\.\\*\\$'
>>> print(re.escape(r'\ a.*$'))
\\\ a\.\*\$
>>> re.escape('www.stackoverflow.com')
'www\\.stackoverflow\\.com'
>>> print(re.escape('www.stackoverflow.com'))
www\.stackoverflow\.com
Run Code Online (Sandbox Code Playgroud)
请参阅:http://docs.python.org/library/re.html#module-contents
在此重复:
re.escape(串)
返回字符串,所有非字母数字反向; 如果要匹配可能包含正则表达式元字符的任意文字字符串,这非常有用.
Tim*_*ick 17
我很惊讶没有人提到过使用正则表达式re.sub():
import re
print re.sub(r'([\"])', r'\\\1', 'it\'s "this"') # it's \"this\"
print re.sub(r"([\'])", r'\\\1', 'it\'s "this"') # it\'s "this"
print re.sub(r'([\" \'])', r'\\\1', 'it\'s "this"') # it\'s\ \"this\"
Run Code Online (Sandbox Code Playgroud)
需要注意的重要事项:
\您正在寻找的字符.你将用它\来逃避你的角色,所以你也需要逃脱
它.([\"]),以便替换
模式可以在它\前面添加时使用找到的字符.(这就是
\1:使用第一个带括号的组的值.)r前面的r'([\"])'意味着它是一个原始字符串.原始字符串使用不同的规则来转义反斜杠.要写([\"])为纯字符串,您需要将所有反斜杠加倍并写入'([\\"])'.在编写正则表达式时,原始字符串更友好.\以将其与替换组之前的反斜杠区分开,例如\1,因此r'\\\1'.要把
它写成一个普通的字符串,你需要'\\\\\\1'- 而且没有人想要那样.使用repr()[1:-1].在这种情况下,双引号不需要转义.[-1:1]切片是从开头和结尾删除单引号.
>>> x = raw_input()
I'm "stuck" :\
>>> print x
I'm "stuck" :\
>>> print repr(x)[1:-1]
I\'m "stuck" :\\
Run Code Online (Sandbox Code Playgroud)
或者你可能只想逃避一个短语粘贴到你的程序?如果是,请执行以下操作:
>>> raw_input()
I'm "stuck" :\
'I\'m "stuck" :\\'
Run Code Online (Sandbox Code Playgroud)