只是一个关于原始字符串、正则表达式模式和替换的简单问题:
我有一个字符串变量定义如下:
> print repr(foo)
'\n\t\t\n\t\tIf (GUTIAttach>=1) //In case of GUTI attach Enodeb should not ask RRCUecapa again\n\t\tUECapInfo;//Mps("( \\"rat_Type\\":0 \\"ueCapabilitiesRAT_Container\\":hex:011c0000000080 )");
我的问题是字符"("
和")"
,我想用原始字符串替换它们,"\("
因为"\)"
它将在之后用作正则表达式模式。
我尝试使用这种方法:
foo_tmp= [inc.replace(')', '\)') for inc in foo]
foo_tmp= [inc.replace('(', '\)') for inc in foo_tmp]
foo = "".join(foo_tmp)
结果给出:
> print repr(foo)
'\n\t\t\n\t\tIf \\(GUTIAttach>=1\\) //In case of GUTI attach Enodeb should not ask RRCUecapa again\n\t\t{\n\t\t\tUECapInfo;//Mps\\("\\( \\"rat_Type\\":0 \\"ueCapabilitiesRAT_Container\\":hex:011c0000000080 \\)"\\);
字符"("
和")"
已被替换为"\\("
and"//)"
而不是"\("
and "\)"
。这对我来说有点出乎意料,所以你知道我怎样才能在不改变字符串其他部分的情况下只得到一个斜杠吗?
注意:.decode('string_escape')
由于字符串的其余部分,该方法也不起作用。原始原始字符串中已存在的双斜杠不得更改。
非常感谢你的帮助