我有一个字符串This is a Test
和一个传递的参数s
。
如何逃避第一个字符串的所有s字符?
应该导致Thi\s i\s a Te\sT
我试过这样:
rstr = rstr.replace(esc, r"\\" + esc)
但在每个\\
s
答案 0 :(得分:2)
r'\\'
产生一个文字双反斜杠:
>>> r'\\'
'\\\\'
此处不要使用原始字符串,只需使用'\\'
:
>>> 'This is a Test'.replace('s', '\\s')
'Thi\\s i\\s a Te\\st'
不要将Python表示与值混淆。为了简化调试和往返,Python解释器使用repr()
函数回显结果。
字符串的repr()
使用Python文字表示法,包括转义任何反斜杠:
>>> r'\s'
'\\s'
>>> len(r'\s')
2
>>> print r'\s'
\s
实际的值只包含一个反斜杠,但因为反斜杠可以启动具有特殊含义的字符,例如\n
(换行符)或\x00
(null字节),它们被表示为转义,以便您可以将值直接粘贴回解释器。