如何逃避字符串的某些字符?

时间:2014-01-21 12:31:24

标签: python string

我有一个字符串This is a Test和一个传递的参数s。 如何逃避第一个字符串的所有s字符?

应该导致Thi\s i\s a Te\sT

我试过这样:

rstr = rstr.replace(esc, r"\\" + esc)

但在每个\\

之前会产生s

1 个答案:

答案 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字节),它们被表示为转义,以便您可以将值直接粘贴回解释器。