【发布时间】:2013-08-12 15:37:29
【问题描述】:
只是一个关于原始字符串、正则表达式模式和替换的简单问题:
我有一个字符串变量定义如下:
> 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 \\)"\\);
字符 "(" 和 ")" 已替换为 "\\(" 和 "//)",而不是 "\(" 和 "\)"。
这对我来说有点出乎意料,所以你知道我怎样才能在不改变字符串其他部分的情况下只得到一个斜杠吗?
注意:方法.decode('string_escape') 也由于字符串的其余部分而不起作用。原始原始字符串中已存在的双斜杠不得更改。
非常感谢您的帮助
【问题讨论】: