用\\ t,\\ n替换\ n \ t等转义字符

时间:2016-01-07 12:33:23

标签: python regex python-2.7

我正在尝试在python中编写一个正则表达式,我希望用\n\t等替换\\n\\t等转义字符。

我试过这只是为了逃避换行和标签。

re.sub(r'\t',r'\\t',re.sub(r'\n',r'\\n',text))

例如:

>>> print re.sub(r'\t',r'\\t',re.sub(r'\n',r'\\n','ads;lfkjaldsf\ndsklajflad\tkjhklajf\n'))
ads;lfkjaldsf\ndsklajflad\tkjhklajf\n

假设我有文字说"\a\b\c\d\n\g\h\t",那么它不需要为非转义字符添加双反斜杠。

所以在这里我不需要使用双反斜杠来逃避每个反斜杠,而是每个带有双反斜杠的特殊转义字符。

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

我找到了Karoly Horvath指出的re.escape。这是它的工作原理。

>>> re.escape('ads;lfkjaldsf\ndsklajflad\tkjhklajf\n')
'ads\\;lfkjaldsf\\\ndsklajflad\\\tkjhklajf\\\n'

<强>更新

虽然我看到re.escape逃脱了太多。空格,分号和许多不需要在我的案例中逃脱的角色。

>>> re.sub(r'(\n|\t|\"|\')',lambda m:{'\n':'\\n','\t':'\\t','\'':'\\\'','\"':'\\\"'}[m.group()], "hello hi  \n \'GM\' \t TC  \n \"Bye\" \t")
'hello hi  \\n \\\'GM\\\' \\t TC  \\n \\"Bye\\" \\t'

这就是我想出的真正有用的东西。